【问题标题】:How to use delimiter to exclude parenthesis?如何使用分隔符排除括号?
【发布时间】:2015-03-26 08:48:02
【问题描述】:

假设我有这个字符串:“(hello) (world)”

我将如何使用 .useDelimiter() 方法来获得在单独的行中打印 hello 和 world 的输出?

我看到了一堆分隔符模式示例,它们似乎都在 useDelimiter 的参数中使用了奇怪的语法。

【问题讨论】:

    标签: java parsing data-structures java.util.scanner delimiter


    【解决方案1】:

    这种“奇怪的语法”叫做正则表达式,你可以在javadoc of the class Pattern找到语法。

    默认分隔符是\p{javaWhitespace}+,这意味着一个或多个“java 空白”(参见前面的 javadoc)。

    在您的情况下,您可以将其更改为[\p{javaWhitespace}()]+,因为您也有空格。

    别忘了转义\p

    s.useDelimiter("[\\p{javaWhitespace}()]+");
    

    【讨论】:

    • 您好,感谢您的回答。我相信我找到了我想忽略所有标点符号的模式:“\p{Punct}”,但我不确定是否要编写模式以将它和空格一起包含。
    • 只需将其放在[] 中,并带有[\\p{Punct} ]+ 之类的空格。
    【解决方案2】:

    试试这个分隔符:

     "\\(|\\)"
    

    【讨论】:

      【解决方案3】:

      useDelimiter() 接受正则表达式作为其参数,您可以在此处查看 Oracle 的正则表达式教程:https://docs.oracle.com/javase/tutorial/essential/regex/

      对于您的具体情况,分隔符 [\\(\\)] 应该可以工作。

      【讨论】:

        猜你喜欢
        • 2021-11-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-02-26
        • 1970-01-01
        • 1970-01-01
        • 2014-10-10
        相关资源
        最近更新 更多