我有字符串值。
类似
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"