在String Java中获取空格后的值



我有字符串值。

类似

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

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

有没有什么方法可以在每个空格后得到数值??

您可以选择使用String.split方法。它接受regex,因此您可以跳过任意数量的空格:

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

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

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

如果您可以将其存储为数组/列表,但不存储为不同的变量,那么您可能希望以这种方式提取所有数字(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"

最新更新