Чтение текста с помощью Java Scanner next (Шаблон pattern)
-
20-08-2019 - |
Вопрос
Я пытаюсь использовать класс Scanner для чтения строки, используя метод next (Pattern pattern) для захвата текста перед двоеточием, а затем после двоеточия, так что s1 = textbeforecolon и s2 = textaftercolon .
Линия выглядит примерно так:
что-то:что-то другое
Решение
Есть два способа сделать это, в зависимости от того, чего конкретно вы хотите.
Если вы хотите разделить весь ввод двоеточиями, то вы можете использовать useDelimiter()
метод, как указывали другие:
// You could also say "scanner.useDelimiter(Pattern.compile(":"))", but
// that's the exact same thing as saying "scanner.useDelimiter(":")".
scanner.useDelimiter(":");
// Examines each token one at a time
while (scanner.hasNext())
{
String token = scanner.next();
// Do something with token here...
}
Если вы хотите разделить каждую строку двоеточием, то это было бы намного проще в использовании String
's split()
способ:
while (scanner.hasNextLine())
{
String[] parts = scanner.nextLine().split(":");
// The parts array now contains ["something", "somethingelse"]
}
Другие советы
Я никогда не использовал Pattern со сканером.
Я всегда просто менял делиметр с помощью струны.http://java.sun.com/j2se/1.5.0/docs/api/java/util/Scanner.html#useDelimiter (java.lang.Строка)
File file = new File("someFileWithLinesContainingYourExampleText.txt");
Scanner s = new Scanner(file);
s.useDelimiter(":");
while (!s.hasNextLine()) {
while (s.hasNext()) {
String text = s.next();
System.out.println(text);
}
s.nextLine();
}