微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Java-替换所有重音符号,但保留诸如版权,商标和已注册的符号

如何解决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 举报,一经查实,本站将立刻删除。