Справка по разделителям Java Scanner - PullRequest
0 голосов
/ 12 февраля 2011

Я пытаюсь прочитать следующий ввод с помощью сканера:

a -> b; 
c -> d; 
e -> f;
g -> h;
i -> j; 

и я хочу, чтобы мой вывод был:

a
b
c
d
e
f
g
h

Я уже пробовал:

s.replaceAll("[->;]", "").trim();

и

sc.useDelimiter("[->;]");

Но каждый раз, когда я вижу это:

a

b
c

d
e

f
g

h

Итак, я получаю 12 символов (включая пробелы) вместо 8. Кто-нибудь знает, как это решить? Я ценю вашу помощь.

1 Ответ

3 голосов
/ 12 февраля 2011

Попробуйте это:

sc.useDelimiter("\\s*->\\s*|;\\s*");

код:

String text = "a -> b; \n" +
      "c -> d; \n" +
      "e -> f;\n" +
      "g -> h;\n" +
      "i -> j; ";
Scanner sc = new Scanner(text).useDelimiter("\\s*->\\s*|;\\s*");
while(sc.hasNext()) {
  System.out.println(sc.next());
}

печать:

a
b
c
d
e
f
g
h
i
j

Или даже sc.useDelimiter("[->\\s;]+"), если ни один из [->\\s;] не может быть частью интересующих вас токенов.

...