gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 10:40:27 26 4
gpt4 key购买 nike

我有一个字符串姓氏。

我想替换特殊的保加利亚语。波兰语字符与英语标准替换。

例如姓氏=“Tuğba Delioğ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

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

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

这将是相当大的数量,因此寻找最有效的方法来做到这一点。

最佳答案

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

有一种特殊情况,即删除一些字符。为此,您需要第二个 boolean 数组。

这是代码草图:

char[] replacements = new char[Character.MAX_VALUE];
boolean[] removals = new boolean[Character.MAX_VALUE];
// fill these arrays
// like replacements['ł'] = 'l';

public String replaceSpecialBulgarianCharacters(String str) {
char[] s = str.toCharArray();
StringBuilder sb = new StringBuilder(s.length);
for (int index = 0; index < s.length; index++) {
char c = s[index];
if (!removals[c]) {
sb.append(replacements[c]);
}
}
return sb.toString();
}

关于Java字符串替换特殊字符(保加利亚语、波兰语、德语),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49035646/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com