问题
在Java中有一种方法可以检查条件:
"这个单个字符是否出现在字符串x中"
没有使用循环?
#1 热门回答(201 赞)
你可以使用string.indexOf('a')
。
如果字符串中存在'a',则返回索引(> = 0)。如果不是,则返回-1。因此,非负返回值意味着字符串中存在"a"。
#2 热门回答(127 赞)
- String.contains(),它检查字符串是否包含指定的char值序列
- String.indexOf()返回指定字符或子字符串的第一个出现的字符串中的索引(此方法有4种变体)
#3 热门回答(28 赞)
我不确定原始海报究竟是在问什么。由于indexOf(...)和包含(...)两者都可能在内部使用循环,或许他正在寻找是否有可能没有循环?我可以想到两种方式,一种方法当然是复发:
public boolean containsChar(String s, char search) {
if (s.length() == 0)
return false;
else
return s.charAt(0) == search || containsChar(s.substring(1), search);
}
另一个不那么优雅,但完整性......:
/**
* Works for strings of up to 5 characters
*/
public boolean containsChar(String s, char search) {
if (s.length() > 5) throw IllegalArgumentException();
try {
if (s.charAt(0) == search) return true;
if (s.charAt(1) == search) return true;
if (s.charAt(2) == search) return true;
if (s.charAt(3) == search) return true;
if (s.charAt(4) == search) return true;
} catch (IndexOutOfBoundsException e) {
// this should never happen...
return false;
}
return false;
}
当你需要支持更长和更长的字符串时,行数增加。但根本没有循环/重复。如果你担心该length()使用循环,你甚至可以删除长度检查。