我有一个字符串
String str="张柏芝250谢霆锋100张纪中234黄晓明108";
我用String[] names=str.split("\\d");来将获取文字
获取完后文字确实获取到了 但本应该获得四个文字元素 但实际上数组元素个数远比四大 因为中间夹杂了很多空白项
我遍历数组输出的是类似
张柏芝
谢霆锋
张纪中
黄晓明
这是怎么回事 如何去掉数组
为什么会匹配三次呢
追答\d匹配的是数字,2是数字,5是数字,0也是数字,所以三次啊;
其他的同理
这个是String类的split方法的实现代码(调用Pattern类):
public String[] split(CharSequence input, int limit) {
int index = 0;
boolean matchLimited = limit > 0;
ArrayList<String> matchList = new ArrayList<String>();
Matcher m = matcher(input);
// Add segments before each match found
while(m.find()) {
if (!matchLimited || matchList.size() < limit - 1) {
String match = input.subSequence(index, m.start()).toString();
matchList.add(match);
index = m.end();
} else if (matchList.size() == limit - 1) { // last one
String match = input.subSequence(index,
input.length()).toString();
matchList.add(match);
index = m.end();
}
}
// If no match was found, return this
if (index == 0)
return new String[] {input.toString()};
// Add remaining segment
if (!matchLimited || matchList.size() < limit)
matchList.add(input.subSequence(index, input.length()).toString());
// Construct result
int resultSize = matchList.size();
if (limit == 0)
while (resultSize > 0 && matchList.get(resultSize-1).equals(""))
resultSize--;
String[] result = new String[resultSize];
return matchList.subList(0, resultSize).toArray(result);
}
从代码上看,String类的split方法是调用了正则表达式的,这里可以在正则表达式上想想办法,所以考虑将你分割的方法调用修改成为:s.split("[\\d]+") ;应该就可以了,下面是我的测试结果:
没有了空白项,这个是你想要的结果吗?