2011-12-14 30 views
7

NumberFormatインスタンスでフォーマットされた文字列があります。私は文字列の文字を表示するとき、私は非破壊空間(ヘキサコード:A0とユニコード160)があります。この文字を文字列から削除するにはどうすればいいですか? string = string.replaceAll("\u0160", "");string = string.replaceAll("0xA0", "")を試しましたが、どちらもうまくいきませんでした。文字列Unicode文字列から文字を削除します。

String string = ((JTextField)c)getText(); 
string = string.replace("\u0160", ""); 
System.out.println("string : " string); 

for(int i = 0; i < string.length; i++) { 
System.out.print("char : " + string.charAt(i)); 
System.out.printf("Decimal value %d", (int)string.charAt(i)); 
System.out.println("Code point : " + Character.codePointAt(string, i)); 
} 

出力はまだこれと同様に動作している小数点値160とコードポイント160

+1

問題を示す短くて完全なプログラムを投稿してください。あなたが本当にここで正規表現を必要としないので、 'replaceAll'ではなく' replace'を使用していますが、最初のアプローチはうまくいくはずです。 –

答えて

39

ユニコード文字\u0160は、改行しないスペースではありません。 \ uの後ろには10進ではない文字の16進表示がなければならないので、改行されないスペースのユニコードは\u00A0です。お試しください:

string = string.replace("\u00A0",""); 
+1

Alelujah!ありがとうございます。 – xtrem06

1

と空白を含んでいます。

public static void main(String[] args) { 
    String string = "hi\u0160bye"; 
    System.out.println(string); 
    string = string.replaceAll("\u0160", ""); 
    System.out.println(string); 
} 
4
String string = "89774lf&933 k880990"; 

string = string.replaceAll("[^\\d]", ""); 

System.out.println(string); 

OUTPUT:

89774933880990 

それはdigits以外のすべてのcharを除去することができます。

+0

replaceまたはreplaceAllを使用しようとするとなぜ機能しないのか説明できますか? – xtrem06

関連する問題