2016-02-27 55 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

相关问题