我有一个文本文件,它有几行像这样
7. SSWAB 38 15 - 57
但是我不需要所有的值,只需要字符串和整数。我会用nextInt
来表示整数,但是我怎么处理1呢?和- - - - - - ?
还有字符串,什么是有用的nextString
?next
够吗?
我已经尝试过这样做,只是使用标记,但没有任何反应
scanner.next(); //7.
String s = (scanner.next()); //SAVES sswab
Integer n1 = scanner.nextInt(); //38
Integer n2 = scanner.nextInt(); //15
Integer n3 = scanner.nextInt(); //- is skipped, as next int is 57
您可以使用scanner.next(Pattern pattern)
来匹配这些组。
试试这个正则表达式
-?d+.?(d+)?|w+
Demo
它将捕获您提到的所有组加上小数和负数。
然后你可以在扫描器
中使用这个正则表达式String text = "7. SSWAB 38 15 - 57 ";
Scanner scanner = new Scanner(text);
while(scanner.hasNext()) {
if(scanner.hasNext("-?\d+\.?(\d+)?|\w+")) {
System.out.println(scanner.next("-?\d+\.?(\d+)?|\w+"));
} else {
scanner.next();
}
}
此代码捕获所有匹配的组并跳过其他组。
7.
SSWAB
38
15
57