rax*_*rax 3 java string unicode character
我有像"12 345 678"这样的字符串,我想删除空格(因为转换为int).所以我按照惯例做了:myString.replaceAll("\\s", "");
但是多么惊喜!它什么都没做,空间还在那里.
当我进一步调查时,我发现这个空格字符是Character.SPACE_SEPARATOR(Character.getType(myString.charAt(<positionOfSpaceChar>))
)类型.
我没有得到的是为什么这个不经意的空格字符(来自Unicode类别Zs
http://www.fileformat.info/info/unicode/category/Zs/list.htm)不被认为是空格(甚至没有Character.isWhitespace(char)
) .
通过java api阅读没有帮助(到目前为止).
注意:最后,我只想删除那个角色......我可能会找到一种方法,但我真的很想解释为什么它会像这样.谢谢
你的问题是\s
定义为[ \t\n\x0B\f\r]
.您要使用的是\p{javaWhitespace}
,其定义为所有字符都java.lang.Character.isWhitespace()
为true.
不确定它是否适用于这种情况,但请注意,不间断的空间不被视为空格. Character.SPACE_SEPARATOR
通常是空格,但不包括'\ u00A0','\ u2007','\ u202F',因为它们不会中断.如果要包含不间断空格,则除了明确包含这3个字符外\p{javaWhitespace}
.这是一种痛苦,但事实就是如此.
实际上,在你转换到的特定情况下int
,我建议:
myString.replaceAll("\\D", "");,
Run Code Online (Sandbox Code Playgroud)
去掉所有不是数字的东西.
归档时间: |
|
查看次数: |
2066 次 |
最近记录: |