2016-08-15 34 views
0

此代碼用於檢查是否在詞串中HashMap的關鍵Android開關鍵

String[] arrs = message.split("(?<!) |(?<= {2})"); 

for(int j = 0 ; j < arrs.length; j++){ 

    if(AppConfig.hashMap.containsKey(arrs[j])){ 
     int s = AppConfig.hashMap.get(arrs[j]); 
    } else 
     text.append(" "+arrs[j]); 
} 

和HashMap中的

public static Map<String, Integer> hashMap = new HashMap<String, Integer>() 
{{ 
    put(":)", R.drawable.emoji_1f60a_64); 
    put(":D", R.drawable.emoji_1f601_64); 

    put(":'(", R.drawable.emoji_1f622_64); 
    put(":P", R.drawable.emoji_1f61c_64); 

    put(";)", R.drawable.emoji_1f609_64); 
    put(":O", R.drawable.emoji_1f632_64); 

    put("-_-", R.drawable.emoji_1f620_64); 
    put(":*", R.drawable.emoji_1f618_64); 
    put("<3", R.drawable.emoji_2764_64); 
    put("^_^", R.drawable.emoji_2764_64); 
}}; 

現在它可以替代用:)繪製emogi但是當我用另一種笑容symbole

的問題,當我在循環字符串,如果在HashMap中

比較發現,每一個字
if(AppConfig.hashMap.containsKey(arrs[j])) //found smile replace with emogi 

它檢查是否有:)或者:當有d的字符串,但問題像那些

"","","","","","","","" 

笑臉符號,以便HashMap的將是

public static Map<String, Integer> hashMap = new HashMap<String, Integer>() 
{{ 
    put("", R.drawable.emoji_1f60a_64); 
    put("", R.drawable.emoji_1f601_64); 

    put("", R.drawable.emoji_1f622_64); 
    put("", R.drawable.emoji_1f61c_64); 

    put("", R.drawable.emoji_1f609_64); 
    put("", R.drawable.emoji_1f632_64); 

    put("", R.drawable.emoji_1f620_64); 
    put("", R.drawable.emoji_1f618_64); 
}}; 

在這裏,我有這個字符串

嗨,你好嗎?

現在

時檢查是否有HashMap的關鍵等於或... 通過

if(AppConfig.hashMap.containsKey(arrs[j]))

它的失敗,並說這個字符串沒有鑰匙

回答

0

您可以創建一個動態格局從hashmap中的值(並重用它,因爲它爲每次執行創建一個模式是昂貴的)。

看看https://stackoverflow.com/a/1326962/6709113

例如:

package aa; 

import java.util.HashMap; 
import java.util.Map; 
import java.util.regex.Matcher; 
import java.util.regex.Pattern; 

import org.apache.commons.lang3.StringUtils; 

public class Test { 
     public static String replaceMultipleStrings(String message) { 
     Map<String,String> tokens = new HashMap<String,String>(); 
     tokens.put("Garfield", "--Garfield--"); 
     tokens.put("", "----"); 
     tokens.put("", "----"); 
     tokens.put("", "----"); 

     // Create pattern of the format "(cat|beverage)" 
     String patternString = "(" + StringUtils.join(tokens.keySet(), "|") + ")"; 
     Pattern pattern = Pattern.compile(patternString); 
     Matcher matcher = pattern.matcher(message); 

     StringBuffer sb = new StringBuffer(); 
     while(matcher.find()) { 
      matcher.appendReplacement(sb, tokens.get(matcher.group(1))); 
     } 
     matcher.appendTail(sb); 

     String result = sb.toString(); 

     System.out.println(result); 

     return result; 
     } 


     public static void main(String[] args) 
     { 
     replaceMultipleStrings("hi how are you, my friend Garfield ?"); 
     } 

} 

的結果是:「嗨,你怎麼樣,我的朋友--Garfield-- ---- ---- - - ?」

如果需要性能,HashMap和Pattern創建應該只進行一次。

+0

我該如何爲我的微笑創建圖案? – medo