如何解决Java-替换所有重音符号,但保留诸如版权,商标和已注册的符号
mystr="MYCOMPANY® PREMIER VISA SIGNATURE® CARD"
mystr= normalizer.normalize(mystr,normalizer.Form.NFD)
mystr= Pattern.compile("\\p{InCOMBINING_DIACRITICAL_MARKS}+").matcher(mystr).replaceAll("");
除了版权,商标和注册之类的字符外,还有什么方法可以从上述字符串中删除重音字符。
expectedString = "MYCOMPANY® PREMIER VISA SIGNATURE® CARD"
解决方法
您可以使用Apache Commons Lang的StringUtils.stripAccents(string);
来实现。
它会从字符中删除重音符号,但不会删除它,因此,为了获得所需的结果,我们比较了两个字符串并将常见字符附加到新字符串中。
从其website下载最新版本的二进制文件,也可以直接从此link下载JAR。
通过您的IDE添加JAR库,并将其导入代码中,如下所示:
import org.apache.commons.lang3.StringUtils;
public class Solution
{
public static void main(String args[])
{
String string1 = "MYCOMPANY® PREMIER VISA SIGNATURE® CARD";
String string2 = StringUtils.stripAccents(string1);
int n = string1.length();
char[] arr1 = string1.toCharArray();
char[] arr2 = string2.toCharArray();
StringBuilder sb = new StringBuilder();
for(int t = 0; t < n; t++)
if(arr1[t] == arr2[t]) sb.append(arr2[t]);
System.out.println(sb);
}
}
它给出输出:
MYCOMPANY® PREMIER VISA SIGNATURE® CARD
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。