2016-02-27 157 views
2

我想檢查一個字符串中是否只有字母(大寫和小寫),空格和引號(包括雙精度和單精度)。我不能完全想出一個這樣做的優雅方式。我唯一能想出的就是列出允許的字符並檢查字符串的每個字符是否在該列表中。檢查一個字符串是否只包含字母空格和引號(最好不是正則表達式)

+2

爲什麼不是正則表達式?這似乎是理想的。 – radoh

+2

[檢查字符串是否只包含字母]可能的重複(http://stackoverflow.com/questions/5238491/check-if-string-contains-only-letters) –

回答

0

你可以這樣說:

str.matches("[a-zA-Z\\s\'\"]+"); 

你最好說沒有正則表達式,但你想要一個優雅的方式。在我看來,這將是一種簡單,簡短和優雅的方式來獲得你想要的。

0

如果你不想正則表達式,你可以通過字符字符串檢查字符:

public static boolean onlyLetterSpaceQuotes(String str){ 
    for(int x=0; x<str.length(); x++){ 
     char ch = str.charAt(x); 
     if (!((ch >= 'a' && ch <= 'z') || (ch >= 'A' && ch <= 'Z') || ch == ' ' 
      || ch == '\'' || ch == '\"')) 
      return false;    
    } 
    return true;    
} 

測試:

System.out.println(onlyLetterSpaceQuotes("abc \"A\'BC")); 
System.out.println(onlyLetterSpaceQuotes("abc \"A\'BC123")); 

輸出:

true 
false 
+0

這正是我正在考慮做的,但我認爲反正我會用正則表達式,因爲它要短得多。我發現這個視頻https://www.youtube.com/watch?v=s_PfopWcMwI&ab_channel=DerekBanas,它解釋了足夠的正則表達式,我或多或少地理解我接受的答案 – Sander

相關問題