2013-03-15 10 views
11

मैं सबसे अच्छी जांच कैसे कर सकता हूं कि एक स्ट्रिंग इनपुट कोडिंग के लिए वैध जावा चर होगा? मुझे यकीन है कि मैं ऐसा नहीं हूं जो ऐसा करने के इच्छुक है। लेकिन शायद मुझे कुछ उपयोगी खोजने के लिए सही कीवर्ड याद आ रहा है।एक स्ट्रिंग वैध जावा वैरिएबल होने पर मान्य कैसे करें?

बेस्ट शायद एक रेगुलर एक्सप्रेशन से है, जो जांच होती है कि हो सकता है: एक पत्र के साथ

  • शुरू होता है

  • तो अंक होने सकते हैं, पत्र

  • की तरह, कुछ विशेष वर्ण हो सकते हैं ' _ '(कौन?)

  • में एक व्हाइटस्पेस विभाजक नहीं हो सकता है
+1

मुझे आश्चर्य है कि आपको इसकी आवश्यकता क्यों है ... –

+3

@JanDvorak: स्वचालित कोड पीढ़ी (या सत्यापन)? – NPE

+0

http://stackoverflow.com/questions/11774099/legal-identifiers-in-java –

उत्तर

18
public static boolean isValidJavaIdentifier(String s) { 
    if (s.isEmpty()) { 
     return false; 
    } 
    if (!Character.isJavaIdentifierStart(s.charAt(0))) { 
     return false; 
    } 
    for (int i = 1; i < s.length(); i++) { 
     if (!Character.isJavaIdentifierPart(s.charAt(i))) { 
      return false; 
     } 
    } 
    return true; 
} 

संपादित करें: और, जैसा कि @ जॉय इंगित करता है, आपको कीवर्ड और आरक्षित शब्दों को भी फ़िल्टर करना चाहिए।

+6

आप कीवर्ड, 'सत्य', 'झूठी' और 'शून्य' गायब हैं। उन्हें अस्वीकार कर दिया जाना है। लेकिन हां, अन्यथा यह बिल्कुल सही है कि spec सुझाव देता है ;-) – Joey

+0

ओह हाँ, यह सच है। इसके अलावा कई अन्य कीवर्ड भी हैं। –

+1

बहुत से नहीं: http://docs.oracle.com/javase/specs/jls/se7/html/jls-3.html#jls-3.9 – assylias

6

बस का उपयोग में निर्मित isName विधि:

public static boolean isName(CharSequence name) 

यह रिटर्न या नहीं, एक नाम नवीनतम स्रोत संस्करण में एक वाक्य रचना मान्य योग्य नाम है।

isName() दस्तावेज़ीकरण देखें।

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