Hex 2 char

Status
Nicht offen für weitere Antworten.
G

Guest

Gast
Hallo,

habe mal eine Frage. Und zwar möchte ich gerne einen StringBuffer nach Sonderzeichen überprüfen und wenn solch einer existiert durch das Hex-Wert ersetzen: Zum Beispiel das Ohm-Zeichen (Ω) durch "\u03A9". Das Auffinden und ersetzen funktioniert, aber leider nicht wieder zurück. Geht es nur über den Weg, wenn ich den zurückgelieferten StringBuffer nach "\u03A9" suche? Oder gibt es die Möglichkeit der automatischen Ersetzung?

Hat wer eine Idee? Hier mal der relevante Codingteil.

Code:
public String getNeu(StringBuffer sb) {

   StringBuffer neu = new StringBuffer();

   if (sb != null) {
      for (int i = 0; i < sb.length(); i++){
         if ((int)sb.charAt(i) > 255)  {
            char c = sb.charAt(i);
            String hex = Integer.toHexString((int)c);

            // Ich denke hier ist der Knackpunkt?!?
            neu.append("\\u" + hex);
         } else {
            neu.append(sb.charAt(i));
         }
      }
   }
}
 

Chloroplast

Bekanntes Mitglied
wie oder ob es mit einem stringbuffer geht weiss ich nicht. Aber .replace() geht bei einem String wunderbar. in deinem fall wäre es dann etwa so:
Java:
String neu = "trololo, \u03A9 ist ein OMEGA zeichen...";
neu = neu.replace("\u03A9","Ω")
System.out.println(neu);
Ausgegeben werden würde:
trololo, Ω ist ein OMEGA zeichen...
 
Zuletzt bearbeitet:

xehpuk

Top Contributor
Na, ob das den Gast nach vier Jahren noch interessiert? ;)
Dein
Code:
replace()
kannst du übrigens gleich weglassen, da
Code:
"\u03A9" == "Ω"
. Bei dir fehlt ein Backslash.

Ich habe da mal etwas zusammengebastelt:
Java:
import java.util.Locale;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class TransformUnicodes {
	public static final char MAX_CODE_POINT = 0xFF;
	public static final int HEX_BASE = 0x10;
	public static final int UNICODE_WIDTH = 4;
	public static final String UNICODE_PREFIX = "\\u";
	public static final String HEX_DIGIT_PATTERN = "\\p{XDigit}";
	
	public static void main(final String[] args) {
		final String initial = "0 Ω – Widerstand zwecklos. ☺";
		final String replaced = replaceUnicodes(initial);
		final String inserted = insertUnicodes(replaced);
		System.out.println(initial);
		System.out.println(replaced);
		System.out.println(inserted);
	}
	
	public static String replaceUnicodes(final String s) {
		final StringBuilder sb = new StringBuilder();
		for (int i = 0; i < s.length(); i++) {
			final char c = s.charAt(i);
			if (c <= MAX_CODE_POINT) {
				sb.append(c);
			} else {
				sb.append(UNICODE_PREFIX);
				final String hex = Integer.toHexString(c).toUpperCase(Locale.ENGLISH);
				for (int j = hex.length(); j < UNICODE_WIDTH; j++) {
					sb.append(0);
				}
				sb.append(hex);
			}
		}
		return sb.toString();
	}
	
	public static String insertUnicodes(final String s) {
		final StringBuffer sb = new StringBuffer();
		final Pattern p = Pattern.compile(Pattern.quote(UNICODE_PREFIX) + HEX_DIGIT_PATTERN + "{" + UNICODE_WIDTH + "}");
		final Matcher m = p.matcher(s);
		while (m.find()) {
			final char c = (char) Integer.parseInt(m.group().substring(UNICODE_PREFIX.length()), HEX_BASE);
			if (c > MAX_CODE_POINT) {
				m.appendReplacement(sb, Matcher.quoteReplacement(String.valueOf(c)));
			}
		}
		m.appendTail(sb);
		return sb.toString();
	}
}
Code:
0 Ω – Widerstand zwecklos. ☺
0 \u03A9 \u2013 Widerstand zwecklos. \u263A
0 Ω – Widerstand zwecklos. ☺
 
Zuletzt bearbeitet:
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
Aboya Char Array rekursiv vergleichen Allgemeine Java-Themen 15
R char aus String entfernen Allgemeine Java-Themen 10
Thallius Char +1 wird int? Allgemeine Java-Themen 7
MiMa Illegal char im Dateinamen Allgemeine Java-Themen 14
K Eingabe mit Char vergleichen klappt nicht! Allgemeine Java-Themen 2
JG12111989 char-Array in int-Array umwandeln Allgemeine Java-Themen 27
J char Allgemeine Java-Themen 3
Thallius Merkwürdiges StringBuilder verhalten (Char Encoding) Allgemeine Java-Themen 6
R Char cannot be derefenrenced? Allgemeine Java-Themen 14
R Bibliothek für Darstellung von char auf 5x7 Dot-Matrix Allgemeine Java-Themen 2
S Char-index aller Buchstaben..? Allgemeine Java-Themen 3
C char und char-Array als parameter übergeben Allgemeine Java-Themen 6
J char-Array löschen Allgemeine Java-Themen 5
S Klassen Zuorgnung Object-char Allgemeine Java-Themen 2
R Beste Methode: char[] c = new String(b, CHARSET).toCharArray() ? Allgemeine Java-Themen 2
Kr0e Synchronisieren: boolean,byte,char ? Allgemeine Java-Themen 2
E Short in Char? Allgemeine Java-Themen 4
F Char-Array nach einem Wort durchsuchen! Allgemeine Java-Themen 11
H Vector<Character> zu char[] castern Allgemeine Java-Themen 2
T JNI String/char-Array Allgemeine Java-Themen 8
M String[] zu Char[][] mit von toCharArray() Allgemeine Java-Themen 5
M BufferedReader.read(char[] cbuf) liefert falsche Werte? Allgemeine Java-Themen 4
T Prüfen, ob Char ein Quantifier ist Allgemeine Java-Themen 6
H int in char umwandeln Allgemeine Java-Themen 7
N problem mit char Allgemeine Java-Themen 6
N Mal wieder char-encoding Probleme Allgemeine Java-Themen 5
T Frage zu char in verbindung mit int Allgemeine Java-Themen 4
B VK_? << durch char rausbekommen Allgemeine Java-Themen 8
M Class.forName und char Allgemeine Java-Themen 10
G Char-zufällig-generieren Allgemeine Java-Themen 11
T MessageDigest von einem char[] berechnen Allgemeine Java-Themen 7
Z Zeichen/char in einer Datei löschen Allgemeine Java-Themen 6
M wie wird aus char eine string kette? Allgemeine Java-Themen 4
A char in String umwandeln Allgemeine Java-Themen 3
L ein char in einem string ersetzen? Allgemeine Java-Themen 5
N char.At gibt Zeichenkette aus. aber leider 2x Allgemeine Java-Themen 10
G Wandeln von Char Wert in Zeichen? Allgemeine Java-Themen 2
U Unicode char kyrillisch Allgemeine Java-Themen 10
C String und char[] / String[] und Vector Allgemeine Java-Themen 21
L char-Zeichen per Konsole einlesen Allgemeine Java-Themen 4
N byte zu Char Allgemeine Java-Themen 1

Ähnliche Java Themen

Neue Themen


Oben