2016-04-22 56 views
2

我一個簡單的Java程序的工作,可以採取一個字符串,像這樣的表情符號替換:適當的Java代碼

⛔️✋STOP✋⛔️你已經觸犯了法律!但現在...你

並用適當的java字符替換每個表情符號。 (我不知道該怎麼稱呼他們)。

下面是一個例子:

汽車表情符號: 「\ uD83D \ uDE97」:將被替換。

這讓我有一個字符串,如

"I am a car: \uD83D\uDE97" 
在Java源代碼

, ,讓它看起來像這樣:

enter image description here

所以,問題是,我怎麼能自動在字符串中找到某個emojji(例如,在字符串中查找每個紅色汽車表情符號)並將其替換爲適當的「Java字符」?

編輯一個:

算了,竟然是真的很簡單。我只是做

string.replace("","Java code"); 
+0

考慮編寫自己的答案/將某人的答案標記爲正確,因爲問題已解決。 – Sanchit

回答

1

您應該使用下面的方法用於此目的:

公共字符串的replaceAll(字符串的正則表達式, 字符串替換)

documentation

例子:

source 
.replaceAll("", "value") 
.replaceAll("", "nextValue") 

一個更好的辦法做到這一點是建立一個地圖與現有的字符,並做更換的每個:

Map<String, String> mappedChars = new HashMap<>(); 
mappedChars.put("A", "valueForA"); 
mappedChars.put("B", "valueForB"); 

AtomicReference<String> value = new AtomicReference<>("A and B and C"); 

mappedChars 
     .entrySet() 
     .stream() 
     .forEach(entry -> value.getAndUpdate(current -> current.replaceAll(entry.getKey(), entry.getValue()))); 

//valueForA and valueForB and C 
0

請注意,並非所有編碼可以處理這些字符串。您可以將該字符串傳遞給一個字節數組,將其解析並將其轉換回字符串。

0

這些是unicode字符。找到它們並替換它們實際上是不同的任務。

在字符串中查找unicode字符是一個難題。一種方法是簡單地將indexOf應用到您的字符串以查找unicode字符的開頭。

以下是一個相當低效的例子,意思是說明這一點比運行最佳。

int unicodeCharacterLocation = Str.indexOf("\\u") 

if (Character.isDigit(Str.charAt(unicodeCharacterLocation + 1))) 
{ 
    if (Character.isDigit(Str.charAt(unicodeCharacterLocation + 2))) 
    { 
     if (Character.isDigit(Str.charAt(unicodeCharacterLocation + 3))) 
     { 
      if (Character.isDigit(Str.charAt(unicodeCharacterLocation + 4))) 
      { 
       //You may have found a unicode character 
      } 
     } 
    } 
} 

這可以在循環中設置以查找所有的unicode字符。

現在,要顯示您找到的字符,您需要用一個Unicode字符替換字符串中相應的unicode值。要做到這一點,您必須將代碼解釋爲其特徵。 This question已經對這個過程有了很好的解釋。