java去掉字符串的空格并放入数组中

问题是:我输入字符串r=“123420”,这里面有不等长的空格,我现在要把里面的数字取出来保存在int[]里面,应该怎么做?试过r.splite("");可是只能删掉一个... 问题是:我输入字符串r=“1 2 3 4 20”,这里面有不等长的空格,我现在要把里面的数字取出来保存在int[]里面,应该怎么做?试过r.splite(" ");可是只能删掉一个空格并保存为数组。用replace或trim又把所有空格删掉了我就无法判断这是几位数了。 展开
 我来答
splashchaos
2015-01-04
知道答主
回答量:0
采纳率:0%
帮助的人:0
展开全部

这样?

public class string_int_tokens
{
    public static void main (String[] args)
    {
        String str = "1  2 3     4 20";
        String[] strArray = str.split("\\s{1,}");
        int[] intArray = new int[strArray.length];
        for (int i = 0; i < strArray.length; ++i) {
            intArray[i] = Integer.parseInt(strArray[i]);
        }        

        for (int k = 0; k < intArray.length; ++k) {
            System.out.println(intArray[k]);            
        }                        
    }
}

运行:

1
2
3
4
20
更多追问追答
追问
是这样,可是有个小问题,就是如果输入是“     1 2   3  4”,前面有空格就会报错。除了先trim()一下这种解决方法以外,能不能直接改进下正则表达式实现?
追答

① 先trim再split是最简单的方法。前有空格,修改正则也没用,因为这不是匹配。

② 修改成正则匹配,不如StringTokenizer来的简单,修改如下:

import java.util.*;
public class string_int_tokens
{
    public static void main (String[] args)
    {
        String str = " 1  2 3     4 20";
        StringTokenizer tokens = new StringTokenizer(str, " ");
        int[] intArray = new int[tokens.countTokens()];
        int index = 0;
        while(tokens.hasMoreTokens()){
            intArray[index] = Integer.parseInt(tokens.nextToken());
            ++index;
        }
        for (int i = 0; i < intArray.length; ++i) {
            System.out.println(intArray[i]);    
        }
    }
}
丘比特908
2015-01-04
知道答主
回答量:0
采纳率:0%
帮助的人:0
展开全部
public class Test {
public static void main(String[] args) {
String s = "1 2 3 4 20";
String s2[] = s.split(" ");
int count=0; //用于统计不是空格的字符串数量,以便后面定义int数组长度
for(int i = 0;i<s2.length;i++) {
if(!(s2[i].equals(""))){ //遍历字符串数组,不是空格的输出并自加count
System.out.println(Integer.parseInt(s2[i]));
count++;
}

}
int a[] = new int[count]; //定义个数组长度为上面统计的
int f = 0;
for(int i = 0;i<s2.length;i++) {
if(!(s2[i].equals(""))){
a[f] =Integer.parseInt(s2[i]);//将不是空格的字符转换为int并赋值给整型数组,从第0个开始
f++;
}
}
for(int b:a) {
System.out.println(b);//输出整形数组
}
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式