2011-11-23 13 views
54

मुझे एक ऐसी विधि की आवश्यकता है जो मुझे बता सके कि स्ट्रिंग में गैर अल्फान्यूमेरिक वर्ण हैं या नहीं।यह निर्धारित करने के लिए कि क्या स्ट्रिंग में गैर-अल्फान्यूमेरिक वर्ण हैं?

उदाहरण के लिए यदि स्ट्रिंग "abcdef है?" या "abcdefà", विधि सही वापस आना चाहिए।

+1

http://stackoverflow.com/questions/1795402/java-check-a-string-if-there-is-a-special-character-in-it –

+0

http://stackoverflow.com/questions/11241690/regex-for-check-if-a-string-is-hardly-alphanumeric – treecoder

उत्तर

115

अपाचे कॉमन्स लैंग का उपयोग करना:

!StringUtils.isAlphanumeric(String) 

Alternativly स्ट्रिंग के पात्रों से अधिक पुनरावृति और के साथ जांच:

!Character.isLetterOrDigit(char) 

आप अभी भी एक समस्या छोड़ दिया है: आपका उदाहरण स्ट्रिंग "abcdefà" अक्षरांकीय है, चूंकि à एक पत्र है। लेकिन मुझे लगता है कि आप इसे गैर-अल्फान्यूमेरिक मानना ​​चाहते हैं, है ना?

तो आप के बजाय नियमित अभिव्यक्ति का उपयोग करना चाहते हो सकता है:

String s = "abcdefà"; 
Pattern p = Pattern.compile("[^a-zA-Z0-9]"); 
boolean hasSpecialChar = p.matcher(s).find(); 
+5

यदि मैं कड़ाई से जरूरी नहीं है तो बाहरी पुस्तकालयों को आयात करने से बचाना चाहूंगा। और हाँ: मुझे गैर अल्फान्यूमेरिक के रूप में माना जाना चाहिए। – lugeno

4

आप स्ट्रिंग में प्रत्येक चरित्र के माध्यम से जाने के लिए और जाँच Character.isDigit(char); या Character.isletter(char);

वैकल्पिक रूप से, आप regex का उपयोग कर सकते हैं करने के लिए है।

+1

उदाहरण के लिए, "-1234" एक संख्या है, न कि अल्फान्यूमेरिक स्ट्रिंग। लेकिन आपका तर्क कैरेक्टर.इसडिजिट "-" के लिए झूठी वापसी करेगा। :( – Abhishek

1

यदि आप अपाचे कॉमन्स लाइब्रेरी का उपयोग कर सकते हैं, तो कॉमन्स-लैंग StringUtils में isAlphanumeric() नामक एक विधि है जो आप खोज रहे हैं।

21

एक दृष्टिकोण स्ट्रिंग वर्ग खुद का उपयोग कर ऐसा करने के लिए है।

String s = "some text"; 
boolean hasNonAlpha = s.matches("^.*[^a-zA-Z0-9 ].*$"); 

एक अन्य ऐसे अपाचे कॉमन्स के रूप में एक बाहरी पुस्तकालय, उपयोग करने के लिए है: मान लें कि आपका स्ट्रिंग ऐसा ही कुछ है चलो

String s = "some text"; 
boolean hasNonAlpha = !StringUtils.isAlphanumeric(s); 
+0

+1: रेगेक्स यहां विजेता है जो मुझे लगता है क्योंकि ओपी वास्तव में जांचना नहीं चाहता अल्फान्यूमेरिक कैरेक्टर। वह चाहता है कि 'विशेष "की अपनी परिभाषा के साथ' विशेष स्पैक्टैक्टर्स (स्ट्रिंग) 'है। –

+2

यह काफी काम नहीं करेगा:' जावा में स्ट्रिंग.मैट्स (...)' चेक करता है कि रेगेक्स * पूरे * स्ट्रिंग। – ruakh

+1

आप सही हैं। मैंने रेगेक्स को संशोधित किया – loscuropresagio

1

string.matches("^\\W*$"); आप क्या चाहते हैं क्या करना चाहिए, लेकिन यह नहीं है व्हाइटस्पेस शामिल करें। string.matches("^(?:\\W|\\s)*$"); व्हाइटसाइट से भी मेल खाता है।

0

आप Java.lang में कैरेक्टर क्लास की isLetter (char c) स्थिर विधि का उपयोग कर सकते हैं। अगर एक स्ट्रिंग अक्षरांकीय है

public boolean isAlpha(String s) { 
    char[] charArr = s.toCharArray(); 

    for(char c : charArr) { 
     if(!Character.isLetter(c)) { 
      return false; 
     } 
    } 
    return true; 
} 
1

इस समारोह का उपयोग जांच करने के लिए:

public boolean isAlphanumeric(String str) 
{ 
    char[] charArray = str.toCharArray(); 
    for(char c:charArray) 
    { 
     if (!Character.isLetterOrDigit(c)) 
      return false; 
    } 
    return true; 
} 

यह बाहरी पुस्तकालयों आयात करने के लिए होने की बचत होती है और कोड को आसानी से आप बाद में तारों पर विभिन्न मान्यता जांच करने के लिए इच्छा चाहिए संशोधित किया जा सकता ।

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