2013-03-15 25 views
11

Kod girişinin kodlama için geçerli bir java değişkeni olup olmadığını nasıl kontrol edebilirim? Eminim bunu yapmak isteyen ilk kişi ben değilim. Ama belki yararlı bir şey bulmak için doğru anahtar kelimeyi kaçırıyorum.Bir dizenin geçerli bir java değişkeni olup olmayacağı nasıl doğrulanır?

muhtemelen kontrol eden bir RegEx olurdu En: bir harf ile

  • başlar

  • sonra basamak içerebilir , harfler

  • gibi bazı özel karakterleri içerebilir ' _ '(hangisi?)

  • beyaz boşluk ayırıcısı içermeyebilir
+1

Neden buna ihtiyacın olduğunu merak ediyorum ... –

+3

@JanDvorak: Otomatik kod oluşturma (veya doğrulama)? – NPE

+0

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

cevap

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; 
} 

DÜZENLEME: @Joey gösterir şekilde ve, ayrıca anahtar kelimeler ve sözcük ile filtre.

+6

Anahtar kelimeler eksik, "true", "false" ve "null". İzin verilmemelidir. Ama evet, aksi halde bu özellik tam olarak ne belirtiyor ;-) – Joey

+0

Oh evet, bu doğru. Başka birçok anahtar kelime de var. –

+1

Çok fazla değil: http://docs.oracle.com/javase/specs/jls/se7/html/jls-3.html#jls-3.9 – assylias

6

Sadece kullanmak yerleşik isName yöntemiyle:

public static boolean isName(CharSequence name) 

Bu isim son kaynak sürümünde bir sözdizimsel olarak geçerli nitelikli adı olup olmadığını döndürür.

isName() belgelerine bakın.

İlgili konular