是否有更好的方法来摆脱重音并使这些字母与使用String.replaceAll()方法和逐个替换字母分开?例:
输入: or?pžsíáýd
输出: orcpzsiayd
它不需要包括所有带有重音符号的字母,如俄语字母或中文字母.
我想将英语(i)的"I"的小写字母与土耳其语(i)的"İ"的小写字母相匹配.它们是相同的字形,但它们不匹配.当我做System.out.println("?".toLowerCase());字符i和打印点(此网站不能正确显示)
有没有办法匹配那些?(最好没有硬编码)我想让程序匹配与语言和utf代码无关的相同字形.这可能吗?
我测试了规范化没有成功.
public static void main(String... a) {
String iTurkish = "\u0130";//"?";
String iEnglish = "I";
prin(iTurkish);
prin(iEnglish);
}
private static void prin(String s) {
System.out.print(s);
System.out.print(" - Normalized : " + Normalizer.normalize(s, Normalizer.Form.NFD));
System.out.print(" - lower case: " + s.toLowerCase());
System.out.print(" - Lower case Normalized : " + Normalizer.normalize(s.toLowerCase(), Normalizer.Form.NFD));
System.out.println();
}
Run Code Online (Sandbox Code Playgroud)
结果未在网站中正确显示,但第一行(iTurkish)仍然具有? 接近小写的i.
目的和问题
这将是一个多语言词典.我希望程序能够识别"İFEL"以"if"开头.为了确保它们不区分大小写,我首先将两个文本转换为小写.İFEL成为i(点)fel并且"if"未被识别为其中的一部分
我正在尝试将所有拉丁语unicode字符转换为它们的[a-z]表示形式
ó --> o
í --> i
Run Code Online (Sandbox Code Playgroud)
我可以轻松地逐一进行,例如:
myString = myString.replaceAll("ó","o");
Run Code Online (Sandbox Code Playgroud)
但由于存在大量的变化,这种方法是不切实际的
有没有其他方式在Java中这样做?例如a regular Expression或autility library
使用案例:
1-城市名称从其他语言到英语,例如
EspíritoSanto - > Espirito Santo,
我需要将使用拉丁字母书写的欧洲地方的名称与某些字符上的重音符号(变音符号)进行比较.有很多中央和写有像拉丁字符重音符号的东欧名称ž和ü,但有些人只是用常规的拉丁字符没有重音符号像写的名字z和u.
我需要一种方法让我的系统识别出例如与所用的所有其他重音字符mšk žilina相同msk zilina,并且类似.有一个简单的方法吗?
我正在寻找一种方法来检测java字符串中的字符是否是"组合字符".例如,
String khmerCombiningVowel =
new String(new byte[]{(byte) 0xe1,(byte) 0x9f,(byte) 0x80}, "UTF-8"); // unicode 17c0
Run Code Online (Sandbox Code Playgroud)
代表结合高棉元音符号.我尝试过"\\p{InCombiningDiacriticalMarks}" 正则表达式,但它似乎不适用于这些特殊的组合字符.或者即使有一些所有unicode组合字符块的综合列表,我也可以为它们制作一个正则表达式?