我正在尝试检查字符串中是否只包含字母(包括大写和小写),空格和引号(包括double和single)。我无法想出一个优雅的方式来做到这一点。我唯一能想到的就是制作一个允许的字符列表,并检查字符串的每个字符是否都在该列表中。
答案 0 :(得分:2)
你可以这样做:
str.matches("[a-zA-Z\\s\'\"]+");
你说最好没有REGEX,但你想要一种优雅的方式。在我看来,这将是一种简单,简洁和优雅的方式来获得你想要的东西。
答案 1 :(得分:0)
如果您不想要REGEX,可以在字符串中逐个字符地检查:
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