7

我有一个程序要求用户输入三个字符串。字符串只能是 a、b 或 c 的组合。

如何在不执行一百万条条件语句的情况下检查字符串是否包含指定字符以外的任何其他字符。

伪示例:

String s = "abq"

if (s.containsOtherCharacterThan(a,b,c))
    System.exit(-1)
4

5 回答 5

12

要查找不是 a、b 或 c 的字符,请使用以下内容:

if(!s.matches("[abc]+"))
{
    System.out.println("The string you entered has some incorrect characters");
}
于 2013-03-01T03:53:57.700 回答
5

您可以使用正则表达式及其字符类。只需调用String#matches(String regex)您想要检查它是否可以完全由正则表达式匹配的字符串。

if (!s.matches("[abc]+")) {//..

这个测试应该只通过包含其他字符的字符串,然后指定它应该通过它,[ ]因为"abq"它包含q. 匹配将检查是否s仅包含abc字符。如果不是,它将返回false,并且由于否定,我们将进入 if 块。

于 2013-03-01T03:53:24.850 回答
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 中,其中键是字符,值是使用次数。

于 2013-03-01T04:01:37.537 回答
1

您可以使用这个正则表达式:- [abc]+

于 2013-03-01T03:53:08.367 回答
1

没有正则表达式的一种方法是遍历字符串并检查每个字符,如果字符不是 a、b 或 c,则退出。仅使用 String.contains 无法做到这一点

于 2013-03-01T03:54:42.213 回答