尝试将这个简单的字符串解析为两个 float
变量结果没有我最初想象的那么简单:
-0.13 0.17%
(唯一?)原因是两个数字之间的空格实际上是一个
。所以第一个 scanner.next()
返回 entire 字符串:
Scanner scanner = new Scanner("-0.13 0.17%");
String first = scanner.next();
我知道 Scanner 的 useDelimiter()方法,但如何告诉它使用
作为分隔符?
我试过 useDelimiter(" ")
但没用
我做错了什么?
最佳答案
Scanner
类的默认分隔符是 \p{javaWhitespace}+
。 \p{javaWhitespace}
由方法 Character.isWhitespace
定义, 根据定义不包括不间断空格。
Determines if the specified character is white space according to Java. A character is a Java whitespace character if and only if it satisfies one of the following criteria:
- It is a Unicode space character (
SPACE_SEPARATOR
,LINE_SEPARATOR
, orPARAGRAPH_SEPARATOR
) but is not also a non-breaking space ('\u00A0'
,'\u2007'
,'\u202F'
).[...]
如果您想要包含不间断空格,即 '\u00A0'
,和也是默认的 Java 空格,您需要构建一个组合它们的正则表达式一起:
scanner.useDelimiter("[\\p{javaWhitespace}\u00A0]+");
注意后面的+
很重要。它使整个模式与 连续 空格序列相匹配。如果没有这个,next()
将在有连续空格时返回空字符串。
关于java - 如何将 " "表示为 Scanner 的分隔符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16005808/