我有一个字符串 A função,Ãugent在我需要更换字符像ç,ã,Ã空字符串。如何仅匹配那些非ASCII字符?我正在使用一个功能public static String matchAndReplaceNonEnglishChar(String tmpsrcdta) { String newsrcdta = null; char array[] = Arrays.stringToCharArray(tmpsrcdta); if (array == null) return newsrcdta; for (int i = 0; i < array.length; i++) { int nVal = (int)array[i]; boolean bISO = Character.isISOControl(array[i]); // Is character ISO control boolean bIgnorable = Character.isIdentifierIgnorable(array[i]); // Is Ignorable identifier // Remove tab and other unwanted characters.. if (nVal == 9 || bISO || bIgnorable) array[i] = ' '; else if (nVal > 255) array[i] = ' '; } newsrcdta = Arrays.charArrayToString(array); return newsrcdta; }但是它不能正常工作..需要什么改进...这里我还有一个问题是,最终的字符串被空格字符代替,从而在字符串中创建了额外的空间。
3 回答
繁星淼淼
TA贡献1775条经验 获得超11个赞
这将搜索并替换所有非ASCII字母:
String resultString = subjectString.replaceAll("[^\\x00-\\x7F]", "");
慕码人2483693
TA贡献1860条经验 获得超9个赞
FailedDev的回答很好,但是可以改进。如果要保留ascii等效项,则需要先进行规范化:
String subjectString = "öäü";
subjectString = Normalizer.normalize(subjectString, Normalizer.Form.NFD);
String resultString = subjectString.replaceAll("[^\\x00-\\x7F]", "");
=> will produce "oau"
这样,像“öäü”这样的字符将被映射到“ oau”,这至少保留了一些信息。如果不进行规范化,则结果字符串将为空白。
添加回答
举报
0/150
提交
取消