检查不需要的字符以抛出 BadCharException

Check for an unwanted character to throw a BadCharException

所以我想做的是编写代码来检查 String 类型的两个实际参数中的任何一个是否包含两个非法字符之一,如果是,则抛出一个异常,说明这两个参数中的哪一个它所在的字符和它所在的索引。我能想到的唯一方法是创建一堆 if 语句,以检查每个案例:

        if (firstName.contains("!") || firstName.contains(":") || lastName.contains("!") || lastName.contains(":")){
            if (firstName.contains("!"))
                throw new BadCharException('!', firstName.indexOf('!'));
            if (firstName.contains(":"))
                throw new BadCharException(':', firstName.indexOf(':'));
            if (lastName.contains("!"))
                throw new BadCharException('!', lastName.indexOf('!'));
            if (lastName.contains(":"))
                throw new BadCharException(':', lastName.indexOf(':'));

是否有更清洁、更好或更有效的方法来解决这个问题?

这里有一个更简洁的方法:

    char[] unwantedChars = {'!', ':'};
    for(char character: unwantedChars) {
        if(firstName.contains(character))
            throw new BadCharException(character, firstName.indexOf(character));
        if(lastName.contains(character))
            throw new BadCharException(character, lastName.indexOf(character));
        
    }