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);
来实现这一点。
它从字符中删除重音符号,但不会删除它,因此为了获得您想要的结果,我比较了这两个字符串,并将常用字符附加到一个新字符串中
从他们的网站下载最新版本的二进制文件,或者您可以直接从该链接下载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