从字符串中获取多个Integer值?

时间:2015-09-18 19:33:55

标签: java arrays string int

[它不是要将String转换为Integer]

我需要从控制台命令行的String中取一些数字。

例如:

String str = "234 432 22 66 8 44 7 4 3 333";

如何获取每个Integer值并将它们放入数组中? 数字的顺序并不重要,因为String可能是:

String str = "34 434343 222";

String str = " 1 2 3 4 5 6 7";

另外,如何在这两种情况下获得数字(带有一个或多个空白字符):

String str = "2 2 44 566";

 String str = "2121     23  44 55 6   58";

4 个答案:

答案 0 :(得分:6)

如果你想捕捉你用空格分隔的数字,那么你可以这样做:

String str = "234 432 22 66 8 44 7 4 3 333";

String[] strArr = str.split("\\s+");
// strArr => ["234", "432", "22", "66", "8", "44", "7", "4", "3", "333"]

更新:在他的评​​论中指向 Evan LaHurd ,然后您可以处理数组值,如果您想将字符串转换为整数,则可以使用方法:

int n = Integer.parseInt("1234");
// or
Integer x = Integer.valueOf("1234");

<强> IDEOne Example

答案 1 :(得分:0)

你可以这样做。

    String str = "234 432 22 66 8 44 7 4 3 333";

    String[] stringArray = str.trim().split("\\s+");//remove any leading, trailing white spaces and split the string from rest of the white spaces

    int[] intArray = new int[stringArray.length];//create a new int array to store the int values

    for (int i = 0; i < stringArray.length; i++) {
        intArray[i] = Integer.parseInt(stringArray[i]);//parse the integer value and store it in the int array
    }

答案 2 :(得分:0)

在空格上使用split并将子字符串解析为整数:

String str = "   2121     23  44 55 6   58   ";

// To list
List<Integer> numberList = new ArrayList<Integer>();
for (String numberText : str.trim().split("\\s+"))
    numberList.add(Integer.valueOf(numberText));

// To array
String[] numberTexts = str.trim().split("\\s+");
int[] numberArray = new int[numberTexts.length];
for (int i = 0; i < numberTexts.length; i++)
    numberArray[i] = Integer.parseInt(numberTexts[i]);

// Show result
System.out.println(numberList);                   // [2121, 23, 44, 55, 6, 58]
System.out.println(Arrays.toString(numberArray)); // [2121, 23, 44, 55, 6, 58]

答案 3 :(得分:0)

如果您只想将字符串的数字放在数组中,您还可以使用&#34; nextInt()&#34; Scanner类的方法。

String str = "2 56  73     4           9   10";
Scanner scanner = new Scanner(str);

List<Integer> integers = new ArrayList<Integer>(0);
While( scanner.hasNext() )   // checks if theres another number to add
    integers.add( scanner.nextInt() );

你也可以使用&#34; hasNextInt()&#34;来避免使用非数字字符:

while( scanner.hasNext(){
    if( scanner.hasNextInt() )
        integers.add( scanner.nextInt() );
}
  

请记住,如果您希望它成为一个数组,您仍然需要转换列表或以不同的方式将数字放在一起。