Java 检查字符串中的辅音

Java 检查字符串中的辅音,java,contains,indexof,Java,Contains,Indexof,我想编写一个方法,使用包含或.indexOf检查字符串的辅音 我想我可以做很长的路,检查字母表中的每个辅音,但我知道有更好的方法。这就是我到目前为止所做的,但正如我所说的,我认为这是一条漫长的道路 public boolean containsConsonant(String searchString) { if(searchString.contains("b") || searchString.contains("c")){ return tru

我想编写一个方法,使用
包含
.indexOf
检查
字符串的辅音

我想我可以做很长的路,检查字母表中的每个辅音,但我知道有更好的方法。这就是我到目前为止所做的,但正如我所说的,我认为这是一条漫长的道路

   public boolean containsConsonant(String searchString) {
        if(searchString.contains("b") || searchString.contains("c")){
            return true;
        }

我认为一个简单的
for
循环在这里最具可读性,您可以使用布尔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;
}
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;
}

我认为一个简单的
for
循环在这里最具可读性,您可以使用布尔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;
}
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;
}

您可以创建一个包含所有辅音的数组,然后使用循环运行它 e、 g


您可以创建一个包含所有辅音的数组,然后使用循环运行它 e、 g


我看到您使用
contains
indexOf

在这种情况下,如果您可以使用
匹配项
,它将非常容易实现

public boolean containsConsonant(String searchString){
    String consonants = ".*[bcdfghj].*";  //list the characters to be checked
    return searchString.matches(consonants);
}

我看到您使用
contains
indexOf

在这种情况下,如果您可以使用
匹配项
,它将非常容易实现

public boolean containsConsonant(String searchString){
    String consonants = ".*[bcdfghj].*";  //list the characters to be checked
    return searchString.matches(consonants);
}

这包括所有字母,而不是辅音only@Maljam哎呀。已编辑。包括所有字母,而不是辅音only@Maljam哎呀。编辑好了。谢谢,我认为匹配应该很好。但是你能告诉我“+”是用来做什么的吗?我只是用正则表达式来消除循环和条件表示任何字符。*->0个或多个辅音主要是这些辅音-可以在字符串中的任何位置。只要它们存在于字符串中,它就会返回true@vins-这很有效!但是没有检查辅音的方法吗
string.substring(0,1).hassconsonant
?@vins-我会在一个问题中问这个问题,但它是重复的,所以…谢谢,我认为匹配应该可以正常工作。但是你能告诉我“+”是用来做什么的吗?我只是用正则表达式来消除循环和条件表示任何字符。*->0个或多个辅音主要是这些辅音-可以在字符串中的任何位置。只要它们存在于字符串中,它就会返回true@vins-这很有效!但是没有检查辅音的方法吗
string.substring(0,1).hassconsonant
?@vins-我会在一个问题中问这个问题,但它是重复的,所以。。。。