如何将逗号添加到 Java 中扫描仪的现有分隔符?
How do you add a comma to the existing delimiter of a Scanner in Java?
我喜欢默认扫描仪的当前分隔符,但我想另外添加一个逗号。这样,像“a,b”这样的字符串将在第一次调用 next() 时 return “a”,然后在第二次调用时“b”。
我尝试了以下方法,但没有得到预期的结果:
Scanner lineScanner = new Scanner(line);
lineScanner.useDelimiter(lineScanner.delimiter().toString()+',');
它不再将制表符留在调用 next() 的 return 字符串之外。
如何添加逗号?
我还尝试使用正则表达式运算符:“|”。
lineScanner.useDelimiter(lineScanner.delimiter().toString()+"|,");
当我使用以下字符串调用 next() 3 次时,我没有得到正确的结果:
" jr nz, .clearsound"
第一名:“jr”
第二名:“nz”
第三:“”
为什么会这样?
文档,即 Scanner
的 javadoc 说:
The default whitespace delimiter used by a scanner is as recognized by Character.isWhitespace
.
Pattern
的 javadoc 说:
Categories that behave like the java.lang.Character
boolean ismethodname methods (except for the deprecated ones) are available through the same \p{prop}
syntax where the specified property has the name javamethodname.
\p{javaWhitespace}
Equivalent to java.lang.Character.isWhitespace()
这意味着 Scanner
开始时就像您这样做一样:
lineScanner.useDelimiter("\p{javaWhitespace}+");
由于 \p{X}
是一个字符 class,您可以将它与其他字符合并到一个 [ ]
中,例如要在逗号上拆分标记,请使用:
lineScanner.useDelimiter("[\p{javaWhitespace},]+"); // separate on spaces and/or commas
注意: 将两个或多个逗号放在一起不会 return 空标记,例如"a , , b"
将在第一次调用 next()
时 return "a"
,然后在第二次调用时 "b"
。
我喜欢默认扫描仪的当前分隔符,但我想另外添加一个逗号。这样,像“a,b”这样的字符串将在第一次调用 next() 时 return “a”,然后在第二次调用时“b”。
我尝试了以下方法,但没有得到预期的结果:
Scanner lineScanner = new Scanner(line);
lineScanner.useDelimiter(lineScanner.delimiter().toString()+',');
它不再将制表符留在调用 next() 的 return 字符串之外。
如何添加逗号?
我还尝试使用正则表达式运算符:“|”。
lineScanner.useDelimiter(lineScanner.delimiter().toString()+"|,");
当我使用以下字符串调用 next() 3 次时,我没有得到正确的结果:
" jr nz, .clearsound"
第一名:“jr”
第二名:“nz”
第三:“”
为什么会这样?
文档,即 Scanner
的 javadoc 说:
The default whitespace delimiter used by a scanner is as recognized by
Character.isWhitespace
.
Pattern
的 javadoc 说:
Categories that behave like the
java.lang.Character
boolean ismethodname methods (except for the deprecated ones) are available through the same\p{prop}
syntax where the specified property has the name javamethodname.
\p{javaWhitespace}
Equivalent tojava.lang.Character.isWhitespace()
这意味着 Scanner
开始时就像您这样做一样:
lineScanner.useDelimiter("\p{javaWhitespace}+");
由于 \p{X}
是一个字符 class,您可以将它与其他字符合并到一个 [ ]
中,例如要在逗号上拆分标记,请使用:
lineScanner.useDelimiter("[\p{javaWhitespace},]+"); // separate on spaces and/or commas
注意: 将两个或多个逗号放在一起不会 return 空标记,例如"a , , b"
将在第一次调用 next()
时 return "a"
,然后在第二次调用时 "b"
。