获取字符串Java中space后的值

To get the value after space in String Java

我有一串值。

喜欢

String line= "cpu  74608   2520   24433   1117073   6176   4054";

我只想提取这些值并将它们存储在不同的变量中。

有什么方法可以在每个 space 之后获取数值??

您有一个选择是使用 String.split 方法。它接受正则表达式,因此您可以跳过任意数量的空格:

String[] values = line.split("\s*");

然后您必须将这些 String 转换为您需要的值:

int firstNum = Integer.valueOf(values[1]);
// anything like this

如果您可以将其存储为 array/list,但不能存储为不同的变量,也许您需要以这种方式提取所有数字 (Java 8):

int[] numbers = Stream.of(values)
        .filter(str -> str.matches("-?\d+"))
        .mapToInt(Integer::valueOf)
        .toArray();

也许,更简单的方法是使用 Scanner:

Scanner scanner = new Scanner(line);
String firstStr = scanner.next();
int firstNum = scanner.nextInt();
// and so on...
    String input = "123 456 123 578";
    String[] numbers = input.split(" ");
    for (String s : numbers) {
        System.out.println(Integer.valueOf(s));
    }

输出:

123
456
123
578

您可以先将数据拆分成一个数组:

String [] lineSplit = line.split("\s+");

然后开始将数据解析为单个变量:

int foo = 0;
for(int i = 0; i < lineSplit.length; i++) {
    if(lineSplit[i].matches("\d+") {
        foo = Integer.parseInt(lineSplit[i]);
    }else {
        //Do something else...
    }
}

并针对不同的数据类型重复上述操作并添加变量等以获得所需的结果。

是的,你可以。 使用 String.split()Integer.parseInt() 如下所示:

    String[] split = line.split("\s+");
    List<Integer> numbers = new ArrayList<Integer>();
    for (String num: split) {
        try {
            numbers.add(Integer.parseInt(num));
        } catch (NumberFormatException ex) {
            // not a number
        }
    }
String thisString="Hello world";

String[] parts = theString.split(" ");
String first = parts[0];//"hello"
String second = parts[1];//"World"