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"
解决方案
您可以使用StringUtils.stripAccents(string);
Apache Commons Lang 实现此目的。
它会从字符中删除重音符号,但不会删除它,因此为了获得您想要的结果,我比较了两个字符串并将常用字符附加到新字符串中。从他们的网站
下载最新版本的二进制文件,或者您可以直接从此链接下载 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
推荐阅读
- amazon-web-services - IIS 上的 appConcurrentRequest 限制超出
- powerbi - 如何在 Power BI 中使用年初至今格式格式化文本列
- c# - 如何在 C# 中显示先前数字的输出一半和十进制
- c++ - 引用传递和值传递是否会导致 C++ 程序的时间复杂度发生变化?
- arrays - array.map 中具有不同值的元素
- php - Laravel Vue api 给出内部 500 服务器错误 App\User not found
- botframework - 如何在 MS Teams 中本地测试呼叫/会议机器人?
- java - 方法 setView 已弃用
- facebook - Facebook 与 Android 网络视图连接
- javascript - 比较两个数组并根据第一个数组 ID Angualr 将新值添加到第二个数组