2015-06-25 6 views
6

मैं यह जानना चाहता हूं कि मेरे EditText में स्माइली (इमोटिकॉन्स) हैं या नहीं। लेकिन मुझे नहीं पता कि उन्हें कैसे पहचानें।एंड्रॉइड में संपादन टेक्स्ट में इमोटिकॉन्स का पता लगाने के लिए

+0

सिमुलेशन द्वारा मेरा मतलब इमोटिकॉन्स है। –

+0

क्या आपने संपादन में इमोटिकॉन्स टाइप करने का प्रयास किया है और देखें कि इसमें सिमाइल द्वारा EditText.getText() –

उत्तर

1

simile से आप भाषण का आंकड़ा की बात कर रहे हैं, तो आप .getText() उपयोग कर सकते हैं और String विधि .contains(String) चाहे वह "की तरह" स्ट्रिंग्स शामिल है या "के रूप में" जाँच करने के लिए।

स्निपेट:

EditText myEditText = (EditText)findViewById(R.id.myEditText); 
String input = myEditText.getText(); 
if(input.contains("like") || input.contains("as")) 
{ 
    //code 
} 
+0

के साथ कौन सा पाठ शामिल है, मेरा मतलब है इमोटिकॉन्स। –

+1

मुझे लगता है कि आप स्माइली का मतलब है। एक अनुकरण कुछ पूरी तरह से अलग है – Kuffs

+0

मुझे इसके लिए बहुत खेद है, लेकिन अब मैंने –

-1

यह जिस तरह से आप अपने edittext में simleys कार्यान्वित कर रहे हैं निर्भर करता है। यदि आप मोटोयोन्स का उपयोग कर रहे हैं तो आप इसे एक चाल का उपयोग करके कर सकते हैं। जब भी एक सरल जोड़ा जाता है तो आप एक कंडशन सेट कर सकते हैं, आप सरलीकृत में कुछ प्रकार का कीवर्ड जोड़ सकते हैं और जब भी स्माइली रीमूवर हो जाता है तो आप उस कीवर्ड को सरणी से हटा सकते हैं। और अंत में आप उस सूची को देख सकते हैं कि उस सिमले को इसमें जोड़ा गया है या नहीं सरणी सूची को संसाधित करके।

पूर्व के लिए

... जब कीबोर्ड पर लिखने मैं निम्नलिखित फिल्टर का उपयोग कर

if(Smiley_added){ 
arraylist.add(smiley_code,i); 
} 

if(simley_removed){ 
arraylist.remove(smileycode,i); 
} 

if(arraylist.get(i).equals("smileyCode")){ 
do this.... 
} 
+0

प्रश्न को सही किया है, मैं जानना चाहता हूं कि इमोटिकॉन्स मौजूद हैं या नहीं, और फिर सर्वर पर भेजने पर मैं उन्हें हटाना चाहता हूं ताकि नक्शा कितना बड़ा हो अगर मैं इमोटिकॉन्स बनाम कोड का नक्शा बनाकर हर इमोटिकॉन्स की जांच करता हूं तो सिमुलेशन और इस विधि को हार्डकोड किया जाएगा। –

16

इमोजी अक्षम करने के लिए:

InputFilter filter = new InputFilter() { 
    @Override 
    public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) { 
     for (int i = start; i < end; i++) { 
      int type = Character.getType(source.charAt(i)); 
      //System.out.println("Type : " + type); 
      if (type == Character.SURROGATE || type == Character.OTHER_SYMBOL) { 
       return ""; 
      } 
     } 
     return null; 
    } 
}; 

mMessageEditText.setFilters(new InputFilter[]{filter}); 

आप केवल पता लगाने अगर EditText सभी इमोजी वर्ण है की जरूरत है आप android.text.TextWatcher इंटरफ़ेस कार्यान्वयन (onTextChange() या afterTextChanged() विधि में) या उदाहरण में इस priciple (Character.getType()) का उपयोग कर सकते हैं charAt() विधि के साथ mMessageEditText.getText() (CharSequence क्लास लौटाता है) पर सरल for चक्र का उपयोग करें।

+1

यह वास्तव में पूरी मदद करता है। –

+0

लेकिन फ़िल्टर का उपयोग करते समय, एक और बग मौजूद होगा। पहले टाइप करें, फिर इमोजी दर्ज करें, फिर वापस स्पेस दबाएं, 1 – HendraWD

+1

के बजाय 2 अक्षर हटा दिए जाएंगे, लेकिन दुख की बात है कि इसमें कई अन्य विशेष पात्रों जैसे कि © ® ™ ℅, चीनी प्रतीकों और यहां तक ​​कि स्पर्श वर्णमाला भी शामिल नहीं है। – 0101100101

संबंधित मुद्दे