作者:ho世英雄 | 来源:互联网 | 2022-12-08 13:47
有什么办法可以转换“ Dzi?kuj”这样的字符串?到科特林的“ Dziekuje”或“šer?er”到“ secer”。我尝试使用java.text.Normalizer,但似乎无法按预期方式工作。
1> Eugen Pechan..:
规范化器仅完成一半的工作。使用方法如下:
private val REGEX_UNACCENT = "\\p{InCombiningDiacriticalMarks}+".toRegex()
fun CharSequence.unaccent(): String {
val temp = Normalizer.normalize(this, Normalizer.Form.NFD)
return REGEX_UNACCENT.replace(temp, "")
}
assert("áéíó?".unaccent() == "aeiou")
这是它的工作方式:
我们正在调用normalize()。如果我们通过à,则该方法返回+。然后,使用正则表达式清理字符串以仅保留有效的US-ASCII字符。
资料来源:http : //www.rgagnon.com/javadetails/java-0456.html
注意这Normalizer
是一个Java类。这不是纯Kotlin,仅在JVM上有效。