繁体   English   中英

Android toLowerCase() 带有重音字符的问题

[英]Android toLowerCase() issue with accented characters

我的应用程序具有根据某些关键字过滤内容的功能。 这是不区分大小写的,因此为了工作,我首先在源内容上调用String.toLowerCase()

我遇到的问题是源是大写的并且包含重音字符,例如法语单词:“INVITÉ”

使用设备默认语言环境设置为lowercase时,此单词返回“invité”问题是最后一个字符与小写字符“é”不同,而是2个字符的组合:“e”101 &“'”769

因为这个“邀请”不匹配“邀请”

我该如何解决这个问题? 我不希望完全删除重音字符

您应该像这样规范化字符串。

String upper = "INVITÉ";
System.out.println(upper + " length=" + upper.length());
String lower = upper.toLowerCase();
System.out.println(lower + " length=" + lower.length());
String normalized = Normalizer.normalize(lower, Normalizer.Form.NFC);
System.out.println(normalized + " length=" + normalized.length());

output:

INVITÉ length=7
invité length=7
invité length=6

它也适用于日语。

String japanese = "が";
System.out.println(japanese + " length=" + japanese.length());
String normalized = Normalizer.normalize(japanese, Normalizer.Form.NFC);
System.out.println(normalized + " length=" + normalized.length());

output:

が length=2
が length=1

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM