将 ä、ö、ü 重命名为 ae、oe、ue
Rename ä, ö, ü to ae, oe, ue
我们希望重命名字符串,以便将 "strange" 字符(如德语变音符号)转换为其官方的非变音符号表示形式。在 Java 中,是否有一些函数可以转换此类字符(也就是处理映射),不仅适用于德语变音符号,还适用于法语、捷克语或斯堪的纳维亚语字符?原因是创建一个可以重命名 files/directories 的函数,Subversion 可以在不同平台上毫无问题地处理它。
This question 类似但没有有用的答案。
您可以使用 Unicode 块 属性 \p{InCombiningDiacriticalMarks}
从字符串中删除(大多数)变音符:
public String normalize(String input) {
String output = Normalizer.normalize(input, Normalizer.Form.NFD);
Pattern pattern = Pattern.compile("\p{InCombiningDiacriticalMarks}+");
return pattern.matcher(output).replaceAll("");
}
不过,这不会按照您希望的方式替换德语变音符号。它会将 ö
变成 o
,ä
变成 a
等等。但也许这对你来说也没有问题。
使用 ICU Transliterator。它是执行此类音译的通用 class。您可能需要提供自己的地图。
答案是Any-Latin; De-ASCII; Latin-ASCII;
PHP 使用 Transliterator
的具体答案(很抱歉没有提供 Java 代码)
$val = 'BEGIN..Ä..Ö..Ü..ä..ö..ü..ẞ..ß..END';
echo Transliterator::create('Any-Latin; De-ASCII; Latin-ASCII;')->transliterate($val);
// output
// BEGIN..AE..OE..UE..ae..oe..ue..SS..ss..END
正常的 ASCII 规则是 Any-Latin; Latin-ASCII;
(BEGIN..A..O..U..a..o..u..SS..ss..END
)
规则应适用于支持 ICU = Unicode 国际组件的任何语言。
我们希望重命名字符串,以便将 "strange" 字符(如德语变音符号)转换为其官方的非变音符号表示形式。在 Java 中,是否有一些函数可以转换此类字符(也就是处理映射),不仅适用于德语变音符号,还适用于法语、捷克语或斯堪的纳维亚语字符?原因是创建一个可以重命名 files/directories 的函数,Subversion 可以在不同平台上毫无问题地处理它。
This question 类似但没有有用的答案。
您可以使用 Unicode 块 属性 \p{InCombiningDiacriticalMarks}
从字符串中删除(大多数)变音符:
public String normalize(String input) {
String output = Normalizer.normalize(input, Normalizer.Form.NFD);
Pattern pattern = Pattern.compile("\p{InCombiningDiacriticalMarks}+");
return pattern.matcher(output).replaceAll("");
}
不过,这不会按照您希望的方式替换德语变音符号。它会将 ö
变成 o
,ä
变成 a
等等。但也许这对你来说也没有问题。
使用 ICU Transliterator。它是执行此类音译的通用 class。您可能需要提供自己的地图。
答案是Any-Latin; De-ASCII; Latin-ASCII;
PHP 使用 Transliterator
的具体答案(很抱歉没有提供 Java 代码)
$val = 'BEGIN..Ä..Ö..Ü..ä..ö..ü..ẞ..ß..END';
echo Transliterator::create('Any-Latin; De-ASCII; Latin-ASCII;')->transliterate($val);
// output
// BEGIN..AE..OE..UE..ae..oe..ue..SS..ss..END
正常的 ASCII 规则是 Any-Latin; Latin-ASCII;
(BEGIN..A..O..U..a..o..u..SS..ss..END
)
规则应适用于支持 ICU = Unicode 国际组件的任何语言。