Java扫描器反斜线分隔符
我尝试使用一系列分隔符作为输入。 这是一个功课。 他们说我们也应该使用反斜杠()。 如果我像这样使用它(最后):
scanner.useDelimiter(";|:|?|~|/|.|,|<|>|`|[|]|{|}|(|)|!|@|#|$|%|^|&|-|_|+|'|=|*|"|||n|t|r|");
它不会工作。 它说不支持的转义序列。 如果我添加另一个反斜杠,它表示非法行结束在字符串文字。 如果我添加另一个,它将转义为双反斜杠,这不是我所需要的。
我无法找到任何解决方案,这就是为什么我问。 我已经完成作业,并使用Scanner,现在改变它不是解决方案(重新实现很多)。
谢谢。
最后应该使用四个反斜杠,如:
scanner.useDelimiter(";|:| ... |r|\");
这是它应该工作的方式。 你说如果你尝试过,它会匹配双反斜杠。 你试过了吗? 如果你这样做了,而且它仍然匹配双反斜杠,我怀疑你的输入也在某处出错了。 (也许它是你的代码中的字符串文字?)
这背后的原因是你的字符串被去掉两次。 一旦编译时,就像Java语言中的每一个其他字符串一样,并且编译正则表达式。 这意味着,在第一步之后它会被转义一次,所以正则表达式编译器会得到两个反斜杠 。 正则表达式编译器也会解除它(就像
r
),并且会匹配单个字符。
如果您希望以这种方式匹配两个反斜杠,则必须在文字中使用八个反斜杠( \\
或\{2}
)。 是的,非常丑陋。
你以错误的方式使用分隔符,我认为。
有一个相关的话题。
先检查一下
如何在Java扫描器中使用分隔符?
链接地址: http://www.djcxy.com/p/78345.html上一篇: Java Scanner backslash delimiter
下一篇: Reading values from a text file and separating into String and double