我已经搜索过 SO(和 Google)但没有找到与我的问题完全匹配的答案:
我想用另一个字符替换 String
中的所有瑞典语字符和空格。我希望它按如下方式工作:
- “å”和“ä”应替换为“a”
- “ö”应替换为“o”
- “Å”和“Ä”应替换为“A”
- “Ö”应替换为“O”
- ""应替换为"-"
这可以用正则表达式(或任何其他方式)实现吗?如果可以,如何实现?
当然,下面的方法可以完成这项工作(并且可以改进,我知道,例如通过替换同一行上的“å”和“ä”):
private String changeSwedishCharactersAndWhitespace(String string) {
String newString = string.replaceAll("å", "a");
newString = string.replaceAll("ä", "a");
newString = string.replaceAll("ö", "o");
newString = string.replaceAll("Å", "A");
newString = string.replaceAll("Ä", "A");
newString = string.replaceAll("Ö", "O");
newString = string.replaceAll(" ", "-");
return newString;
}
我知道如何使用正则表达式将所有“å”、“ä”或“ö”替换为“”。问题是如何根据使用正则表达式的字符将其替换为另一个字符?肯定有比上述方法更好的使用正则表达式的方法吗?
最佳答案
对于带有变音符号的拉丁字符,检索基本字母代码 + 变音符号组合代码的 unicode 规范化(java 文本)可能会有所帮助。像这样的东西:
import java.text.Normalizer;
newString = Normalizer.normalize(string,
Normalizer.Form.NFKD).replaceAll("\\p{M}", "");
关于java - 将一个字符替换为不同的字符,具体取决于它是哪个字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13396593/