我有一个程序要求用户输入三个字符的字符串。该字符串只能是a,b或c的组合。
如何检查字符串是否包含除指定字符之外的任何其他字符而不执行一百万个条件语句。
伪示例:
String s = "abq"
if (s.containsOtherCharacterThan(a,b,c))
System.exit(-1)
答案 0 :(得分:10)
要查找非a,b或c的字符,请使用以下内容:
if(!s.matches("[abc]+"))
{
System.out.println("The string you entered has some incorrect characters");
}
答案 1 :(得分:5)
您可以使用正则表达式及其character classes。只需在要检查的字符串上调用String#matches(String regex)
是否可以完全匹配正则表达式。
if (!s.matches("[abc]+")) {//..
此测试应仅传递包含[
]
中指定的其他字符的字符串,因此"abq"
应传递它,因为它包含q
。匹配将检查s
是否仅包含a
,b
和c
个字符。如果不是,它将返回false
,并且由于否定,我们将输入if block。
答案 2 :(得分:2)
你可以将字符串拆分成一个数组,并从那里循环输入你可以比较每个字符。
public boolean containsOtherCharacter(String s, String a, String b, String c) {
String[] st = s.split("");
for(int x = 0; x < st.length; x++)
if (st[x].compareTo(a) != 0 && st[x].compareTo(b) != 0 && st[x].compareTo(c) != 0)
return true;
return false;
}
这将告诉您是否还有其他字符。如果您想知道它们是哪些字符,您可以将每个字符插入到HashMap中,其中键是字符,值是它使用的次数。
答案 3 :(得分:1)
您可以使用此正则表达式: - [abc]+
。
答案 4 :(得分:1)
没有正则表达式的方法是遍历字符串并检查每个字符,如果字符不是a,b或c,则退出。使用String.contains
无法做到这一点