2014-05-14 7 views
5

Ich hatte eine Frage zu den Steuerzeichen. Ich muss sie in einer Zeichenfolge finden und löschen. Recherchieren und nützliche Tipps finden.In Java geschriebene Steuerzeichen in Bytes finden

Ich schrieb dies:

output.toString().replaceAll("[\\p{Cntrl}\\p{Cc}]","") 

Aber ich wurde gefragt, ob diese Methode die Steuerzeichen finden können, wenn sie in Bytes geschrieben werden. Um ehrlich zu sein, ich habe keine Ahnung. Versuche, im Netz zu schauen, aber ich weiß nicht, wie ich es testen kann.

Dank

+0

Wie viel Platz belegt jedes Zeichen in Bytes? 2 Bytes oder ein Byte? Sie können versuchen, den ganzzahligen Wert des Bytes mit dem ASCII-Wert der Steuerschlüssel zu vergleichen. – OnePunchMan

+0

Was macht das CC? Ich sehe {Ctrl} hier: http://docs.oracle.com/javase/6/docs/api/java/util/regex/Pattern.html, aber nichts über Cc. Vielen Dank. – user420667

Antwort

3

Ja, die Zeichen entfernt werden, siehe nächsten Code:

byte[] chars = { 'h', 'e', 10, 15, 21, 'l', 'l', 'o', 13 }; 
String str = new String(chars, "utf8"); 
System.out.println("=========="); 
System.out.println(str); 
System.out.println("=========="); 
System.out.println(str.replaceAll("[\\p{Cntrl}\\p{Cc}]", "")); 
System.out.println("=========="); 

Die Ausgabe für diesen Code wäre:

========== 
he 
llo 
========== 
hello 
========== 

Sobald die Sonderzeichen in einem String-Objekt enthalten ist, es doesn Es spielt keine Rolle, ob es aus einem Byte [] oder einem anderen Objekt erstellt wurde. Es wird immer im selben Format gespeichert.

+0

Vielen Dank, ich bin beruhigt :) – Tony

0

Wenn von "in Bytes geschrieben" Sie bedeuten, dass Sie Ihre Eingabe ein Byte-Array ist, Sie

String s = new String(myByteArray) 

und verwenden Sie den Code auf s schreiben können.

+0

Nein meine Eingabe ist ein String, aber er sagte mir das: "aber wird es mit Bytes arbeiten? Denn Steuerzeichen werden auf diese Weise dargestellt." Aber die erste Eingabe, die ich erhalte, ist ein String. Also muss meine Methode funktionieren. – Tony

+0

Dann verstehe ich die Frage nicht. Welche Bytes? – Zoyd

+0

Das ist mein Problem auch -_-'... Ich fragte ihn, was er wollte, hatte aber keine Erklärung mehr. Er sagte, Sie müssen Ihre Zeichenfolge in Byte konvertieren (myString.getBytes (Charset.forName ("UTF-8"))) und dann die Steuerzeichen finden. Und die wieder in Zeichenfolge konvertieren. Für mich scheint es nutzlos ... denn wenn wir einen String haben, benutze einfach meine Regex. – Tony