Collator类是做到这一点(见相应javadoc)的好方法。这是一个单元测试,展示了如何使用它:
import static org.junit.Assert.assertEquals;
import java.text.Collator;
import java.util.Locale;
import org.junit.Test;
public class CollatorTest {
@Test public void liege() throws Exception {
Collator compareOperator = Collator.getInstance(Locale.FRENCH);
compareOperator.setStrength(Collator.PRIMARY);
assertEquals(0, compareOperator.compare("Liege", "Liege")); // no accent
assertEquals(0, compareOperator.compare("Liège", "Liege")); // with accent
assertEquals(0, compareOperator.compare("LIEGE", "Liege")); // case insensitive
assertEquals(0, compareOperator.compare("LIEGE", "Liège")); // case insensitive with accent
assertEquals(1, compareOperator.compare("Liege", "Bruxelles"));
assertEquals(-1, compareOperator.compare("Bruxelles", "Liege"));
}
}
编辑: 遗憾地看到我的回答没有满足您的需求;也许这是因为我已经把它作为单元测试来呈现?这适合你吗?我personnaly更好地找到它,因为它是短和它使用的SDK(不需要的字符串替换)
Collator compareOperator = Collator.getInstance(Locale.FRENCH);
compareOperator.setStrength(Collator.PRIMARY);
if (compareOperator.compare("Liège", "Liege") == 0) {
// if we are here, then it's the "same" String
}
希望这有助于
类似的问题,包括Java答案http://stackoverflow.com/questions/249087/how-do-i-remove-diacritics-accents-from-a-string-in-net – Rup 2010-07-09 11:03:59
可能重复的[转换符号,重音字母to English Alphabet。](http://stackoverflow.com/questions/1008802/converting-symbols-accent-letters-to-english-alphabet) – Pentium10 2010-07-09 11:18:42
感叹!过去,你可以在360上使用单一的“TR”指令来做到这一点,但从那时起事情就变得更加复杂了。 – 2012-10-16 21:05:31