java scanner忽略^ Caret

时间:2012-04-08 20:25:53

标签: java java.util.scanner delimiter

我正在尝试使用方法& = ~ ^将Java扫描程序与以下一组分隔符useDelimiter("&|=|~|^");(&符号,等号,代字号,插入符号)一起使用。

^之外,所有分隔符都可以正常工作,但这会被忽略:为什么会这样?

我无法在扫描仪文档中看到原因。

3 个答案:

答案 0 :(得分:3)

您需要转义^,如下所示:useDelimiter("&|=|~|\\^")。这是因为^是正则表达式中的元字符,而String的{​​{1}}参数最终会被编译为正则表达式Pattern

同样地,您可以像这样编写分隔符,在这种情况下,无需转义useDelimiter()^

答案 1 :(得分:2)

^是正则表达式中的保留符号,因此您需要将其转义:\\^

答案 2 :(得分:1)

您可以使用character class

,而不是使用替换
"[&=~^]"

由于^在字符类中不是特殊的(开头除外),因此不需要转义。