2011-12-14 19 views
7

से चार हटाएं मेरे पास नंबरफॉर्मैट उदाहरण के साथ स्वरूपित एक स्ट्रिंग है। जब मैं स्ट्रिंग के वर्ण प्रदर्शित करता हूं तो मेरे पास एक गैर-ब्रेकिंग स्पेस होता है (हेक्सा कोड: ए0 और यूनिकोड 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

+1

कृपया एक छोटा लेकिन पूरा कार्यक्रम पोस्ट करें जो समस्या का प्रदर्शन करता है। आपका पहला दृष्टिकोण ठीक होना चाहिए, हालांकि मैं 'replaceAll' की बजाय 'प्रतिस्थापन' का उपयोग करता हूं, क्योंकि आपको वास्तव में यहां रेगेक्स की आवश्यकता नहीं है। –

उत्तर

39

यूनिकोड वर्ण \u0160 एक गैर-ब्रेकिंग स्पेस नहीं है। \ N चरित्र के हेक्साडेसिमल प्रतिनिधित्व होने के बाद दशमलव नहीं होना चाहिए, इसलिए गैर-ब्रेकिंग स्पेस के लिए यूनिकोड \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); 

उत्पादन:

89774933880990 

यह सब char अन्य digits से समाप्त करेंगे।

+0

क्या आप समझा सकते हैं कि जब मैं प्रतिस्थापित या प्रतिस्थापित करने का प्रयास करता हूं तो यह क्यों काम नहीं करता है? – xtrem06

संबंधित मुद्दे