使用“Ñ”或“É”等特殊字符管理string.toLowerCase()中的“错误”

时间:2013-04-03 03:27:49

标签: string special-characters translate string-matching

我正在尝试用Java编写翻译器 我管理二叉树中的字典,但是当我尝试管理英语 - 西班牙语等翻译词典时,或者像“西班牙语”这样的词汇翻译成“español”。我遇到的问题是我必须做一个非区分大小写的翻译。 为此,我选择了string.toLowerCase()方法,但它删除了特殊字符,如“Ñ”,“ñ”或重音词“é”。我稍后会像这样比较字符串

str.toLowerCase(new Locale("es", "ES")).equals(dictionaryword.toLowerCase(new Locale("es", "ES")

如果例如

,那段代码不会返回true
str = Español;
dictionaryword = español;

我的问题是,如果有人知道如何管理这个“错误”或者我做错了什么。 另外,我不知道我是否应该尝试

str.equalsIgnoreCase(dictionaryword)

而不是我正在使用的toLowerCase(Locale)。

2 个答案:

答案 0 :(得分:0)

如果您的toLowerCase(locale)功能不起作用,我会认真建议您自己实施。由于我们所说的是西班牙语,因此只需要处理几个特殊字符。

答案 1 :(得分:0)

看一下RegexReplace和StringReplace。

str = Regex.Replace(str, "Ñ", "ñ");
str = Regex.Replace(str, "[A-Z]", "[a-z]");