我有一个使用NumberFormat实例格式化的字符串。当我显示字符串的字符时,我有一个不间断的空格(hexa代码:A0和unicode 160)。如何从字符串中删除此字符。
我尝试了string = string.replaceAll("\u0160", "");
和string = string.replaceAll("0xA0", "")
,两者都无效。
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的空格。
答案 0 :(得分:41)
unicode字符\u0160
不是一个不间断的空间。在\ u之后必须有十进制表示的字符而不是十进制,因此非中断空格的unicode是\u00A0
。尝试使用:
string = string.replace("\u00A0","");
答案 1 :(得分:4)
String string = "89774lf&933 k880990";
string = string.replaceAll( "[^\\d]", "" );
System.out.println(string);
输出:
89774933880990
它将消除char
以外的所有digits
。
答案 2 :(得分:1)
这是按原样运作。
public static void main(String[] args) {
String string = "hi\u0160bye";
System.out.println(string);
string = string.replaceAll("\u0160", "");
System.out.println(string);
}