gpt4 book ai didi

java - 字符串分割方法在开头留下空标记

转载 作者:行者123 更新时间:2023-12-01 13:36:09 28 4
gpt4 key购买 nike

我有一个字符串

String text="abc19xyz87nag";

我只需要从中获取数字,所以我申请了"\\D+"正则表达式如下,

String text="abc19xyz87nag";
String[] tks=text.split("\\D+");

但是我在数组的开头看到一个空标记
enter image description here

无论如何我找到了另外两个解决方案,如下

使用扫描仪

Scanner sc = new Scanner(text).useDelimiter("\\D+");
while(sc.hasNext()) {
System.out.println(sc.nextInt());
}

使用模式和匹配器

Matcher m = Pattern.compile("\\d+").matcher(text);
while (m.find()) {
System.out.println(m.group());
}

那么为什么字符串分割在开头留下空标记?
我需要更改正则表达式来避免它吗?
感谢任何帮助

最佳答案

在开始时不丢弃空字符串是一个设计决定。基本原理是 split() 经常与像这样的数据一起使用

item1, item2, item3

(此处分隔符为“,”)并且您希望将非空项保留在其位置。

现在,假设您解析包含 3 个项目的行(如上面所示),其中第一个和最后一个是可选的。如果 split 会丢弃前导和尾随空字符串,并且返回 2 个元素,则您无法决定输入是否为:

, item2, item3

item1, item2

通过仅丢弃末尾的空字符串,您就知道每个非空字符串都位于正确的位置。

关于java - 字符串分割方法在开头留下空标记,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21254940/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com