【发布时间】:2015-03-26 08:48:02
【问题描述】:
假设我有这个字符串:“(hello) (world)”
我将如何使用 .useDelimiter() 方法来获得在单独的行中打印 hello 和 world 的输出?
我看到了一堆分隔符模式示例,它们似乎都在 useDelimiter 的参数中使用了奇怪的语法。
【问题讨论】:
标签: java parsing data-structures java.util.scanner delimiter
假设我有这个字符串:“(hello) (world)”
我将如何使用 .useDelimiter() 方法来获得在单独的行中打印 hello 和 world 的输出?
我看到了一堆分隔符模式示例,它们似乎都在 useDelimiter 的参数中使用了奇怪的语法。
【问题讨论】:
标签: java parsing data-structures java.util.scanner delimiter
这种“奇怪的语法”叫做正则表达式,你可以在javadoc of the class Pattern找到语法。
默认分隔符是\p{javaWhitespace}+,这意味着一个或多个“java 空白”(参见前面的 javadoc)。
在您的情况下,您可以将其更改为[\p{javaWhitespace}()]+,因为您也有空格。
别忘了转义\p
s.useDelimiter("[\\p{javaWhitespace}()]+");
【讨论】:
[] 中,并带有[\\p{Punct} ]+ 之类的空格。
试试这个分隔符:
"\\(|\\)"
【讨论】:
useDelimiter() 接受正则表达式作为其参数,您可以在此处查看 Oracle 的正则表达式教程:https://docs.oracle.com/javase/tutorial/essential/regex/
对于您的具体情况,分隔符 [\\(\\)] 应该可以工作。
【讨论】: