Java-如何使用.useDelimiter()将dilimiter设置为多个不同的对象?
我希望使用Java-如何使用.useDelimiter()将dilimiter设置为多个不同的对象?,java,java.util.scanner,Java,Java.util.scanner,我希望使用Scanner类方法:.useDilimiter()来解析文件,之前我会使用一系列.replaceAll()语句来替换我想要的dilimiter 无论如何,我正在尝试使一个扫描器限制以下任何字符:,(,),{,},[,],,,和标准空白。我该怎么做呢 扫描程序使用正则表达式(regex)来描述分隔符。默认情况下,它是\p{javaWhitespace}+,表示一个或多个(由于+运算符)空白 在正则表达式中,表示我们可以使用的字符集中的单个字符。但由于正则表达式中的[和]表示字符类的开始
Scanner
类方法:.useDilimiter()
来解析文件,之前我会使用一系列.replaceAll()
语句来替换我想要的dilimiter
无论如何,我正在尝试使一个
扫描器
限制以下任何字符:
,(
,)
,{
,}
,[
,]
,,,
和标准空白
。我该怎么做呢 扫描程序使用正则表达式(regex)来描述分隔符。默认情况下,它是\p{javaWhitespace}+
,表示一个或多个(由于+
运算符)空白
在正则表达式中,表示我们可以使用的字符集中的单个字符。但由于正则表达式中的[
和]
表示字符类的开始和结束,所以这些字符是元字符(甚至在字符类内部)。要将它们视为文字,我们首先需要对它们进行转义。我们可以通过
- 在它们之前添加
\
(以写为“\\\”
的字符串形式)
- 或者将它们放在表示引号部分的
\Q..\E
中(其中所有字符都被视为文字,而不是元字符)
所以regex表示(){}[]中的一个代码>字符可以看起来像“[\\Q(){}[],!\\E]”
如果要添加对标准分隔符的支持,可以使用OR运算符将此正则表达式与\p{javaWhitespace}+
组合,OR运算符为
因此,您的代码可以如下所示:
yourScanner.useDelimiter("[\\Q(){}[],!\\E]|\\p{javaWhitespace}+");
可能的副本谢谢!非常有帮助,因为我仍然很困惑regex@Quabs不客气。由于您是新来的,您可能不知道如果某个答案解决了您的问题,您可以将其标记为解决方案。更多信息请访问。