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