我希望使用Scanner
类方法:.useDilimiter()
来解析文件,之前我会使用一系列.replaceAll()
语句来替换我想要的稀释符与white space
合作。
无论如何,我尝试将Scanner
的任意字符稀释为.
,(
,)
, {
,}
,[
,]
,,
,!
和standard white space
。我该怎么做呢?
答案 0 :(得分:0)
扫描程序使用正则表达式(正则表达式)来描述分隔符。默认情况下,\p{javaWhitespace}+
表示一个或多个(由于+
运算符)空格。
在正则表达式中,我们可以使用character class [...]
来表示来自字符集的单个字符。但由于正则表达式中的[
和]
表示字符类的开头和结尾,因此这些字符是元字符(甚至在字符类中)。要将它们视为文字,我们需要首先逃避它们。我们可以通过
\
(在字符串中写为"\\"
),\Q...\E
中(其中所有字符都被视为文字,而不是元字符)。因此代表( ) { } [ ] , !
个字符之一的正则表达式看起来像"[\\Q(){}[],!\\E]"
。
如果要添加对标准分隔符的支持,可以使用OR运算符\p{javaWhitespace}+
将此正则表达式与|
结合使用。
所以你的代码看起来像:
yourScanner.useDelimiter("[\\Q(){}[],!\\E]|\\p{javaWhitespace}+");