如何去掉java字符串数组中的空白项啊

我有一个字符串
String str="张柏芝250谢霆锋100张纪中234黄晓明108";
我用String[] names=str.split("\\d");来将获取文字
获取完后文字确实获取到了 但本应该获得四个文字元素 但实际上数组元素个数远比四大 因为中间夹杂了很多空白项
我遍历数组输出的是类似

张柏芝

谢霆锋

张纪中

黄晓明
这是怎么回事 如何去掉数组

250、100、234、108分别匹配了三次,导致每两个你想要的字串之间有三个空的值。
简单的办法是你输出时判断一下追问

为什么会匹配三次呢

追答

\d匹配的是数字,2是数字,5是数字,0也是数字,所以三次啊;
其他的同理

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2016-10-15

这个是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]+") ;应该就可以了,下面是我的测试结果:

没有了空白项,这个是你想要的结果吗?

本回答被提问者和网友采纳
第2个回答  2013-01-08
for(int i=0;i<names.length;i++){
names[i]=names[i].trim();
}
够明了了吧 采纳把
第3个回答  2013-01-08
遍历出来之后 使用.trim()处理一下就行了
希望能帮到你!
第4个回答  2013-01-14
String[] names=str.split("\\d+"); 在你的\d后面加个“+”号
相似回答