2015-10-20 115 views
0

如何用数字分割字符串? 如果我有“20 40”进入,我该如何分割 它,所以我得到20,40?带数字的Java分割字符串

int t = Integer.parseInt(x); 
    int str = t; 
    String[] splited = str.split("\\s+"); 

我的代码。

+2

'String.split'它不会为一个int工作,所以你会想这样做也许'的String [] = NUM​​S x.split( “\\ S +”); '我假设'x'是由空格划分的nums的String?看@Juned Ashan回答 – 3kings

回答

1

你需要将其转换为字符串值,然后再拆,也许是这样的:

String[] splited = String.valueOf(str).split("\\s+"); 

好像你正在阅读的字符串数量,并试图在这里分裂之前将其转换为整数:

int t = Integer.parseInt(x); 

所以实际上你可以分割你的变量x并获得indiviudal int类型,它像这样:

String[] splited = x.split("\\s+"); 
for(String num:splited) { 
    int intVal = Integer.valueOf(num); 
} 
+1

'str'是一个'int'。你的解决方案将如何返回除'new String [] {String.valueOf(str)}'之外的东西? – brimborium

+0

@brimborium String.valueOf()将返回int的字符串,并且split将返回String数组.... –

+1

如果将一个'int'转换为'String',则不需要分割,因为它只是一个单个整数,将永远不会有空间... – brimborium

2

如果你试图解析包含空格分隔的整数令牌,为int阵列的字符串,下面的工作:

String input = "20 40"; 
String[] tokens = input.split(" "); 
int[] numbers = new int[tokens.length]; 

for (int i = 0; i < tokens.length; i++) { 
    numbers[i] = Integer.parseInt(tokens[i].trim()); 
} 

你也可以做到这一点的一个班轮通过Iterables从惊人Google Guava librarySplitter公用事业:

Integer[] numbers = Iterables.toArray(Iterables.transform(
     Splitter.on(' ').trimResults().split(input), 
      new Function<String, Integer>() { 

       @Override 
       public Integer apply(String token) { 
        return Integer.parseInt(token); 
       } 
      }), Integer.class);