-1

次のような不要な文字を含む値を含むXMLファイルがあります

\xc2d
d\xa0
\xe7
\xc3\ufffdd
\xc3\ufffdd
\xc2\xa0
\xc3\xa7
\xa0\xa0
'619d813\xa03697'
\xe9.com

入力例は次のようになります

name : John Hinners\xc2d
email: abc@gmail\xe9.com
and others ....  

必要な出力は

name : John Hinners
email: abc@gmail.com
and others ....  

私はPythonのバックグラウンドから来ており、このタスクは次のように簡単に実行できます。

def remove_non_ascii(s):
    return ''.join(i for i in s if ord(i)<128)  

Javaで同じタスクを実行するための同様の方法はありますか?

4

3 に答える 3

1

Javaでは、それほどきれいではありません。

正規表現を使用できますが、文字の簡単な定義がない場合は、おそらくこれを行うのが最善です:

        StringBuilder sb = new StringBuilder();
        for (int i=0; i<s.length(); i++) {
           if (((int)s.charAt(i))<128) sb.append(s.charAt(i));
        }
于 2012-06-18T16:32:21.653 に答える
1

私がここで言ったように:

同様の質問

正規表現を使用

String clean = str.replaceAll("\\P{Print}", "");

印刷できない文字をすべて削除します。ただし、これには \n (ライン フィード)、\t(タブ)、および \r (キャリッジ リターン) も含まれます。これらの文字を保持したい場合は、次のように使用します。

String clean = str.replaceAll("[^\\n\\r\\t\\p{Print}]", "");
于 2015-07-15T07:42:03.990 に答える
0
String s = "WantedCharactersunwantedCharacters";

残りの文字列を「WantedCharacters」にしたい場合は、次のように記述します。

s = s.replaceAll("unwantedCharacters", "");

[編集]:もちろん、書くこともできます

private static String removeNonAscii(String s){
    StringBuffer sb = new StringBuffer();
    for(int i=0; i<s.length(); ++i){
        if(s.charAt(i) < 128){
            sb.append(s.charAt(i));
        }
    }
    return sb.toString();
}

それが満足のいく解決策である場合

于 2012-06-18T16:29:56.693 に答える