我有一个应该只包含特定字符的字符串:{}()[]
我创建了一个验证方法来检查字符串是否包含禁止字符(禁止字符我指的是不是 {}()[]
的所有内容)
这是我的代码:
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/