不要使用
split。使用
find将返回所有匹配子字符串的方法。你可以做到
Pattern reg = Pattern.compile("\d+");Matcher m = reg.matcher("asd0085 sa223 9349x");while (m.find()) System.out.println(m.group());
将打印
00852239349
根据您的正则表达式,看来您的目标也就是要删除前导零,例如
0085。如果是这样,则可以使用regex like
0*(\d+)并参加与组1(括号中的一个)匹配的部分,并在该组之外匹配前导零。
Pattern reg = Pattern.compile("0*(\d+)");Matcher m = reg.matcher("asd0085 sa223 9349x");while (m.find()) System.out.println(m.group(1));
输出:
852239349
但是,如果您真的想使用,
split然后更改
"\D0*"为
\D+0*,则可以拆分一个或多个非数字
\D+,而不只是一个非数字
\D,但是使用此解决方案,您可能需要忽略结果数组中的第一个空元素(取决于字符串)将从应拆分的元素开始)。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)