0

ここ数時間、次の文字列から摂氏記号を削除しようとしています。以前の投稿を見たところ、/u2103 がその Unicode 表現であることがわかりました。その糸を取り除こうとしても、まだ運がありません。これが私が今持っているものです:

String temp = "Technology=Li-poly;Temperature=23.0 <degree symbol>C;Voltage=3835";
StringBuilder filtered = new StringBuilder(temp.length()); 
    for (int i = 0; i < temp.length(); i++) {
char test = temp.charAt(i);
if (test >= 0x20 && test <= 0x7e) {
    filtered.append(test);
}
}

temp = filtered.toString();

temp.replaceAll(" ", "%20");

結果の文字列は次のようになります: Technology=Li-poly;Temperature= 23.0 C ;

私も試してみました

temp.replaceAll("\\u2103", "");
temp.replaceChar((char)0x2103, ' ');

しかし、これはどれも機能しません。

私の現在の問題は、文字列をフィルタリングする関数が空白スペースを残すことですが、replaceAll(" ", "%20") の呼び出しがその特定のスペースを認識していないようです。ReplaceAll は、他のスペースを %20 に置き換えます。

4

2 に答える 2

4

これは 1 つの問題です。

temp.replaceAll(" ", "%20");

呼び出していますreplaceAllが、結果を使用していません。文字列は不変です。コンテンツを変更しているように見えるメソッドは、実際には結果として異なる文字列を返しています。あなたがしたい:

temp = temp.replaceAll(" ", "%20");

そうは言っても、スペースをまったく置き換えようとしている理由や、結果の文字列の何が問題なのかは明らかではありません。

あなたはあなたの他の電話と同じ問題を抱えていtemp.replaceAllますtemp.replaceChar

バックスラッシュをエスケープしているため、文字を直接置き換えようとしても失敗します-本当に欲しいのは:

temp = temp.replace("\u2103", "");

replace代わりに を使用していることに注意してください。replaceAll後者は正規表現を使用しているため、ここではまったく使用する必要はありません。

于 2011-08-31T05:27:25.753 に答える
0

おそらくCharacter.isWhiteSpace()関数を活用できます。

于 2011-08-31T05:29:27.720 に答える