显然,当我使用Regex时,Java的Regex风格将Umlauts和其他特殊字符算作非“单词字符”。
"TESTÜTEST".replaceAll( "\\W", "" )
为我返回"TESTTEST“我想要的是只删除所有真正的非“单词字符”。有什么方法可以做到这一点,而不是像下面这样
"[^A-Za-z0-9äöüÄÖÜßéèáàúùóò]"
才意识到我忘记了?
发布于 2009-10-23 16:05:43
好吧,这是我最终得到的一个解决方案,但我希望有一个更优雅的……
StringBuilder result = new StringBuilder();
for(int i=0; i<name.length(); i++) {
char tmpChar = name.charAt( i );
if (Character.isLetterOrDigit( tmpChar) || tmpChar == '_' ) {
result.append( tmpChar );
}
}
result
最终得到了想要的结果...
发布于 2011-02-23 06:20:29
你可能想要remove the accents and diacritic signs first,然后在每个字符位置检查“简化”字符串是否是ascii字母-如果是,原始位置应包含单词字符,如果不是,则可以删除。
https://stackoverflow.com/questions/1611979
复制相似问题