【问题标题】:Using the asterisk-character as a Java Scanner Delimiter使用星号字符作为 Java 扫描程序分隔符
【发布时间】:2011-01-13 18:47:16
【问题描述】:

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

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

非常感谢!

莱纳斯

【问题讨论】:

    标签: java delimiter java.util.scanner


    【解决方案1】:

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

    本质上,您必须转义转义字符。

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        【解决方案3】:

        另一种选择是:

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

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

        【讨论】:

        • 请注意,字符类本身可能包含其他可能需要转义的元字符。
        • @bart true,但星号不是其中之一 :)
        • 你是对的,当然。我的评论更像是对 OP 的谨慎评论。 :)
        猜你喜欢
        • 2011-01-23
        • 2014-04-03
        • 1970-01-01
        • 2019-10-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-04-01
        相关资源
        最近更新 更多