#java #file #io #txt
Вопрос:
У меня есть txt-файл, в котором есть несколько строк, подобных этой
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
Ответ №1:
Вы можете использовать scanner.next(Pattern pattern)
для сопоставления этих групп.
Попробуйте это регулярное выражение
-?d .?(d )?|w
ДЕМОНСТРАЦИЯ
Он поймает все группы, которые вы упомянули, плюс дробные числа и отрицательные числа.
Затем вы можете использовать это регулярное выражение в сканере
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