Следующее чтение текста с помощью Java Scanner (Pattern pattern) - PullRequest
3 голосов
/ 09 мая 2009

Я пытаюсь использовать класс Scanner для чтения строки, используя метод next (Pattern pattern), чтобы захватить текст перед двоеточием, а затем после двоеточия, чтобы s1 = textbeforecolon и s2 = textaftercolon.

Строка выглядит так:

что-то: somethingelse

Ответы [ 3 ]

10 голосов
/ 09 мая 2009

Есть два способа сделать это, в зависимости от того, что именно вы хотите.

Если вы хотите разделить весь ввод двоеточиями, то вы можете использовать метод 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 * * * * * * * * * *

while (scanner.hasNextLine())
{
    String[] parts = scanner.nextLine().split(":");
    // The parts array now contains ["something", "somethingelse"]
}
0 голосов
/ 09 мая 2009
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();
}
0 голосов
/ 09 мая 2009

Я никогда не использовал Pattern со сканером.

Я всегда просто менял разделитель на строку. http://java.sun.com/j2se/1.5.0/docs/api/java/util/Scanner.html#useDelimiter(java.lang.String)

...