2016-04-22 20 views
1

ich auf einem einfachen Java-Programm arbeite, die eine Zeichenfolge wie folgt nehmen:Ersetzen Sie alle Emojis in Zeichenfolge

⛔️✋STOP✋⛔️ Sie das Gesetz verletzt haben! Aber jetzt ... Sie

und ersetzen Sie jedes Emoji mit dem entsprechenden Java-Zeichen. (Ich weiß nicht, wie ich sie nennen soll). Hier

ist ein Beispiel:

Das Automobil emoji: "\\uD83D\\uDE97": würde ersetzt werden.

Dies ermöglicht es mir, eine Zeichenfolge zu haben, wie

"I am a car: \uD83D\uDE97"

in Java-Quellcode, und lassen Sie es wie folgt aussehen:

enter image description here

Ich kann dies leicht tun für ein Art von Emoji, indem Sie dies tun:

emojistring = emojistring.replace("", "\uD83D\uDE97"); 

Das Problem ist, dass ich Strings übersetzen werde, wie meine Beispielstring, die viele verschiedene Arten von Emojis haben wird. Ich möchte nicht eine emojistring.replace("Emoji","Java Character") für jede Art von Emoji, die in meiner Zeichenfolge ist schreiben müssen.

Gibt es eine automatische Möglichkeit, ein Emoji in einer Zeichenfolge zu erkennen und durch den entsprechenden Java-Code zu ersetzen?

+0

prüfen http://stackoverflow.com/questions/24840667/what-is-the-regex-to-extract-all -the-emojis-from-a-string out – klor

+1

Mögliches Duplikat von [Ersetze Emoji mit passendem Java-Code] (http://stackoverflow.com/questions/36802371/replace-emoji-with-adjective-java-code) –

+0

I denke, dass hier etwas Verwirrung herrscht. Java speichert bereits ergänzende Zeichen als UTF-16-Ersatzpaare. Das Schreiben von "" ist genau dasselbe wie das Schreiben von "\ uD83D \ uDE97" '. Ihr Aufruf emojistring.replace tut nichts. – VGR

Antwort

0

Der dargestellte Zeichenplatzhalter ist das Unicode "Zeichen"/Codestelle U + 01F697. Da Java Unicode als UTF-16-Zeichen codiert, benötigt man für solche hochnummerierten Codepunkte ein Zeichenpaar.

Sie auch getan haben könnte:

int[] codepoints = { 0x1F697 }; 
String s = new String(codepoints, 0, codepoints.length); 

In der Tat, die nothi0x1F697ng gelöst. Das eigentliche Problem besteht darin, dass die Schriftart die Emoji nicht darstellen kann und zu einem solchen Box-Zeichen zurückkehrt.

Java kann viel mit formatiertem Text tun, zum Beispiel als HTML in Java Swing GUI. Dann könnten Sie Emoji-Zeichen durch Bilder ersetzen. Oder Sie verwenden einen Font-Editor und verwenden registerFont.

Sie können programmatisch Schriftarten überprüfen:

Font font = ... 
if (!font.canDisplay(0x1F697)) { 
    ... 
} 
1

einen Blick auf emoji-java nehmen und insbesondere seine EmojiParser Klasse.

Sie können Ihre Zeichenfolgen in Aliase (Textdarstellungen), HTML-Dezimalzahlen oder HTML-Hexadezimalzahlen zerlegen. Sie können die Emojis auch entfernen.

Beispiel:

String str = "An awesome string with a few emojis!"; 
String result = EmojiParser.parseToAliases(str); 
System.out.println(result); 
// Prints: 
// "An :grinning:awesome :smiley:string with a few :wink:emojis!" 

Disclaimer: Ich schrieb diese Bibliothek

+1

Bedeutet das, dass es ein Emoji in dieses Format konvertieren kann \ uD83D \ uDe97'? – Roymunson

Verwandte Themen