I have the following string (japanese) " ユーザー名" , the first character is "like" whitespace but its number in unicode is 12288, so if I do " ユーザー名".trim() I get the same string (trim doesn't work). If i do trim in c++ it works ok. Does anyone know how to solve this issue in java? Is there a special trim method for unicode?
6条答案
按热度按时间4bbkushb1#
作为Mike提到的
StringUtils
类的替代,您还可以使用Unicode感知的正则表达式,仅使用Java自己的库:或者,实际上只是修剪,而不是删除字符串中的空格:
mepcadol2#
看看Unicode Normalization和Normalizer类。该类是Java 6中的新类,但如果您使用的是早期的JRE,则可以在ICU4J库中找到等效版本。
cu6pst1q3#
尝试ApacheCommons的StringUtils类。StringUtils.strip()方法应该可以为您工作。
waxmsbnn4#
从java文档中,它解释了为什么这不起作用。
如果此String对象表示空字符序列,或者此String对象表示的字符序列的第一个和最后一个字符的代码都大于'\u0020'(空格字符),则返回对此String对象的引用。
你可以很容易地扮演你自己的版本。也许codePointAt方法可以用于此目的。
http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html
jc3wubiy5#
您必须基于
Character.isWhitespace()
编写自己的trim()
方法-不幸的是,trim()
并不像其API文档所声称的那样:它只去除ASCII空格,而不去除任何其他类型的空格。mrphzbgm6#
我认为这是简单的方法来修剪日本字符串在java中