java - 检查字符串是否包含特定字符的最有效方法

标签 java string validation

我有一个应该只包含特定字符的字符串:{}()[]

我创建了一个验证方法来检查字符串是否包含禁止字符(禁止字符我指的是不是 {}()[] 的所有内容)

这是我的代码:

private void validate(String string) {

    char [] charArray = string.toCharArray();
    for (Character c : charArray) {
        if (!"{}()[]".contains(c.toString())){
            throw new IllegalArgumentException("The string contains forbidden characters");
        }
    }
}

我想知道是否有更好的方法来做到这一点,因为我的方法似乎不对。

最佳答案

如果我按照你的方式实现,我会亲自修改如下:

private static void validate(String str) {
    for (char c : str.toCharArray()) {
        if ("{}()[]".indexOf(c) < 0){
            throw new IllegalArgumentException("The string contains forbidden characters");
        }
    }
}

变化如下:

  • 没有为 char 数组声明一个临时变量。
  • 使用 indexOf 查找字符而不是将 c 转换为 String 以使用 .contains().

  • 在原始 char 上循环,因为您不再需要 toString().

  • 不命名参数 string,因为这会引起混淆,不是好的做法。

注意:包含 调用indexOf(),因此从技术上讲,这也为您节省了每次迭代调用的方法。

关于java - 检查字符串是否包含特定字符的最有效方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57994496/

相关文章:

java - 我可以创建一个文件并通过电子邮件发送它而不保存在 java 中吗?

c++ - 将字符 vector 转换为字符串的最快方法

php - 如何修复此错误: “array to string conversion ” ?

c - sizeof 与字符串的行为

HTML 输入类型 "email"和输入类型 "number"除了输入类型 "text"之外的不同样式

java - 如何通过 https URL 针对 XSD 验证 XML 文件?

java - (ILOG) IBM ODM 是否有使用像查找表这样的决策表或者这是一个不好的用法?

java - 将嵌套对象发送到 Spring POST

java - 如何从 SonarQube 分析中排除目录?

angular - 重置 Angular 7 响应验证