Java Scanner分隔符有帮助

时间:2011-02-12 18:48:17

标签: java delimiter java.util.scanner

我正在尝试使用Scanner阅读以下输入:

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 个答案:

答案 0 :(得分:3)

试试这个:

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;]