使用星号字符作为Java扫描仪分隔符

时间:2011-01-13 18:47:16

标签: java delimiter java.util.scanner

嘿大家, 这个问题对我来说似乎很愚蠢,但我不能为我的生活找到答案。我想要做的就是扫描一个用星号(*)分隔的字符串。但是,当我尝试foo.useDelimiter(“*”);时,Java将星号解释为通配符,并使用每个字符作为分隔符...这显然不是我想要的。 我尝试使用反斜杠作为转义字符,但这给了我编译器错误“非法转义字符”。

这可能很简单,但我再也不知道在哪里找到答案了!

非常感谢!

莱纳斯

3 个答案:

答案 0 :(得分:6)

在Java字符串中,您希望使用双反斜杠\\,因此将要解释的实际字符串是\ *,从而转义*。

基本上,你必须逃避转义字符。

答案 1 :(得分:4)

由于Scanner使用与其他正则表达式操作相同的Pattern类,因此应该使用两个反斜杠。

(一个反斜杠只转义字符串常量中的下一个字符,你需要其中两个才能在实际字符串中得到一个。)

答案 2 :(得分:2)

另一种选择是:

Scanner in = ...;
in.useDelimiter("[*]");

括号内的所有内容都是您要用作分隔符的字符。