Java字符串替换特殊字符(保加利亚语,波兰语,德语)

时间:2018-02-28 17:46:03

标签: java arrays string localization character

我有一个字符串姓氏。

我想取代特别的保加利亚人。波兰字符替换英文标准。

例如surname =“TuğbaDelioğlu”

最终输出字符串应为:tugbadelioglu

为了实现这一点,我刚刚完成了一系列string.replaceAll,如下所示: -

surname = surname.replaceAll("ı", "i");
surname = surname.replaceAll("ł", "l");
surname = surname.replaceAll("Ł", "l");
surname = surname.replaceAll("ń", "n");
surname = surname.replaceAll("ğ", "g");

surname = surname .replaceAll("\\p{InCombiningDiacriticalMarks}+", ""); // this will remove diacritics

String newSurname = surname.replaceAll("[^a-zA-Z]",""); // remove non A-Z characters 

surname = surname.replaceAll("\\s","").toLowerCase(); // remove spaces and make lowercase

有没有更有效的方法来做到这一点,即有一个数组: - 要替换的字符 要替换的字符

然后遍历字符串并用数组中的表示替换每个匹配的字符?

这将是相当高的音量,因此寻找最有效的方法。

1 个答案:

答案 0 :(得分:0)

你可以做的是创建一个字符数组,将每个字符映射到应该替换的字符(如果不需要替换,则为相同的字符)。然后你可以通过字符串(最好作为一个字符数组传递)并盲目地用每个字符取代它应该替换它。

删除一些字符有一个特殊情况。你需要第二个布尔数组。

以下是代码草图:

f