替换字符串中的非ASCII字符

我有一个字符串 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;

    }

但是它不能正常工作..需要什么改进...这里我还有一个问题是,最终的字符串被空格字符代替,从而在字符串中创建了额外的空间。


萧十郎
浏览 804回答 3
3回答

繁星淼淼

这将搜索并替换所有非ASCII字母:String resultString = subjectString.replaceAll("[^\\x00-\\x7F]", "");

慕码人2483693

FailedDev的回答很好,但是可以改进。如果要保留ascii等效项,则需要先进行规范化:String subjectString = "öäü";subjectString = Normalizer.normalize(subjectString, Normalizer.Form.NFD);String resultString = subjectString.replaceAll("[^\\x00-\\x7F]", "");=> will produce "oau"这样,像“öäü”这样的字符将被映射到“ oau”,这至少保留了一些信息。如果不进行规范化,则结果字符串将为空白。
打开App,查看更多内容
随时随地看视频慕课网APP