我想使用 .contains
或 .indexOf
编写一个方法来检查 consonants 的 string
.
我想我可以做很长的路,检查字母表中的每个 辅音,但我知道有更好的方法。到目前为止,这是我所拥有的,但就像我说的那样,我认为这有点漫长。
public boolean containsConsonant(String searchString) {
if(searchString.contains("b") || searchString.contains("c")){
return true;
}
最佳答案
我认为一个简单的for
loop 在这里是最易读的,您可以使用 boolean 值 and 测试字符是否在所需范围内。您可以使用 or 测试来跳过元音。类似的东西,
public boolean containsConsonant(String searchString) {
if (searchString == null) {
return false;
}
for (char ch : searchString.toCharArray()) {
char lower = Character.toLowerCase(ch);
if (lower >= 'a' && lower <= 'z') {
if (lower == 'a' || lower == 'e' || lower == 'i' ||
lower == 'o' || lower == 'u') continue;
return true;
}
}
return false;
}
优化
然后您可以使用 contains
来优化上述内容(并且直接您的问题)在提取的常量上 String
的 vowels
.类似的东西,
private static final String vowels = "aeiou";
public static boolean containsConsonant(final String searchString) {
if (searchString == null) {
return false;
}
for (char ch : searchString.toCharArray()) {
char lower = Character.toLowerCase(ch);
if (lower >= 'a' && lower <= 'z' && !vowels.contains(String.valueOf(lower))) {
return true;
}
}
return false;
}
关于java - 检查字符串中的辅音,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35677954/