我想格式化一些字符串,如"I>Télé"类似的东西"itele".这个想法是,我希望我的字符串是小写(完成),无空白字符(完成),无重音或特殊字符(如>,<,/,%,~,é,@,ï等).
删除特殊字符的出现是可以的,但是我想在删除重音时保留字母(就像我在我的例子中所做的那样).这就是我所做的,但我不认为好的解决方案是用"e"替换每个é,è,ê,ë,而不是为"i","a"等替换它,然后删除每一个特殊字符...
String name ="I>télé" //example
String result = name.toLowerCase().replace(" ", "").replace("é","e").........;
Run Code Online (Sandbox Code Playgroud)
这样做的目的是为Android应用程序提供有效的资源文件名,所以如果您有任何其他想法,我会接受它!
And*_*yle 13
您可以使用java.text.Normalizer该类将文本转换为普通的拉丁字符,然后在可能的情况下将变音符号(重音符号)转换为正常的拉丁字符.因此,例如,单字符字符串"é"将成为两个字符串['e', {COMBINING ACUTE ACCENT}].
完成此操作后,您的String将是非重音字符,重音修饰符和您提到的其他特殊字符的组合.此时,您可以仅使用白名单来过滤字符串中的字符,以保留您想要的内容(这可能就像[A-Za-z0-9]正则表达式一样简单,具体取决于您所使用的内容).
方法可能如下所示:
String name ="I>télé"; //example
String normalized = Normalizer.normalize(name, Form.NFD);
String result = normalized.replaceAll("[^A-Za-z0-9]", "");
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9186 次 |
| 最近记录: |