检查java中的字符串中是否有辅音

检查java中的字符串中是否有辅音,java,Java,因此,我正在编写一个名为pig latin的游戏程序(你可以查看Wikipedia的规则,但它包括取第一个辅音并将其移到单词的后面,然后添加-ay)。我需要检查这个词的开头是否有辅音。如果它有一个或多个同音词,它需要得到从第一个辅音开始到元音前最后一个辅音结束的子串 public void isConsonant(String word){ char[] consonants = {'b', 'c', 'd', 'f', 'g', 'h', 'j', 'k', 'l', 'm'

因此,我正在编写一个名为pig latin的游戏程序(你可以查看Wikipedia的规则,但它包括取第一个辅音并将其移到单词的后面,然后添加-ay)。我需要检查这个词的开头是否有辅音。如果它有一个或多个同音词,它需要得到从第一个辅音开始到元音前最后一个辅音结束的子串

public void isConsonant(String word){
    char[] consonants = {'b', 'c', 'd', 'f', 'g', 'h', 'j', 'k', 'l', 'm'
            , 'n', 'p', 'q', 'r', 's', 't', 'v', 'w', 'x', 'z' };
    char[] StringArray = word.toCharArray();
    for(int dex = 0; dex < StringArray.length; dex++ ){
        char current = StringArray[dex];
    }
}
所以我的问题是,是否有可能看到一个字符串是否包含辅音,并将第一个辅音的子字符串设置为元音之前的第一个辅音

public void isConsonant(String word){
    char[] consonants = {'b', 'c', 'd', 'f', 'g', 'h', 'j', 'k', 'l', 'm'
            , 'n', 'p', 'q', 'r', 's', 't', 'v', 'w', 'x', 'z' };
    char[] StringArray = word.toCharArray();
    for(int dex = 0; dex < StringArray.length; dex++ ){
        char current = StringArray[dex];
    }
}

提前谢谢

使用布尔函数检查char是否为元音,而不是写big

乙二醇


检查每个字符,然后您就可以轻松地将其编码出来。

使用布尔函数检查字符是否为元音,而不是写得太大

乙二醇


检查每个字符,然后您就可以轻松地将其编码出来。

在这里,我删除了您的
isconant
函数,并创建了一个新函数,以获取字符串中仅包含常量的第一部分

使用此更改修改游戏功能:

public String getFirstConsonants(String verify) {
    List<Character> vowels = Arrays.asList('a', 'e', 'i', 'o', 'u'); // better finding vowels (faster)

    String firstString = "";
    for (int i = 0; i < verify.length(); i++) {
        if (!vowels.contains(verify.charAt(i)))
            firstString += verify.charAt(i); // we found a constant
        else
            break; // we found a vowel, we have already our string
        }

    return firstString;
}

public void game() {
    // The actual word
    String word2 = word.getText();

    // Lets find the first consonants
    String firstString = getFirstConsonants(word2);

    String finalWord = word2.substring(firstString.length()) + "-" + firstString + "ay";
    output.setText(finalWord);
}
公共字符串getFirstConsonants(字符串验证){
List元音=数组。asList('a','e','i','o','u');//更好地查找元音(更快)
字符串firstString=“”;
对于(int i=0;i
在这里,我删除了您的
isconsant
函数,并创建了一个新函数,以获取字符串中仅包含常量的第一部分

使用此更改修改游戏功能:

public String getFirstConsonants(String verify) {
    List<Character> vowels = Arrays.asList('a', 'e', 'i', 'o', 'u'); // better finding vowels (faster)

    String firstString = "";
    for (int i = 0; i < verify.length(); i++) {
        if (!vowels.contains(verify.charAt(i)))
            firstString += verify.charAt(i); // we found a constant
        else
            break; // we found a vowel, we have already our string
        }

    return firstString;
}

public void game() {
    // The actual word
    String word2 = word.getText();

    // Lets find the first consonants
    String firstString = getFirstConsonants(word2);

    String finalWord = word2.substring(firstString.length()) + "-" + firstString + "ay";
    output.setText(finalWord);
}
公共字符串getFirstConsonants(字符串验证){
List元音=数组。asList('a','e','i','o','u');//更好地查找元音(更快)
字符串firstString=“”;
对于(int i=0;i
你找错人了。。。使用正则表达式:

要提取第一个元音之前的所有辅音,请执行以下操作:

String initialConsonants = str.replaceAll("([^aeiouAEIOU]*).*", "$1");
要仅提取辅音,请执行以下操作:

String onlyConsonants = str.replaceAll("[aeiouAEIOU]", "");
boolean isAllConsonants = str.matches("[^aeiouAEIOU]+");
或者如果您真的需要知道文本是否都是辅音:

String onlyConsonants = str.replaceAll("[aeiouAEIOU]", "");
boolean isAllConsonants = str.matches("[^aeiouAEIOU]+");

你找错人了。。。使用正则表达式:

要提取第一个元音之前的所有辅音,请执行以下操作:

String initialConsonants = str.replaceAll("([^aeiouAEIOU]*).*", "$1");
要仅提取辅音,请执行以下操作:

String onlyConsonants = str.replaceAll("[aeiouAEIOU]", "");
boolean isAllConsonants = str.matches("[^aeiouAEIOU]+");
或者如果您真的需要知道文本是否都是辅音:

String onlyConsonants = str.replaceAll("[aeiouAEIOU]", "");
boolean isAllConsonants = str.matches("[^aeiouAEIOU]+");

有一种方法可能会让你想做什么,这有点有趣:

假设您正在将
word
转换为pig拉丁语,那么使用
word.split(“[aeiouAEIOU]”,2)
怎么样?查看
split
的文档,它将与正则表达式精确匹配一次,因此返回的字符串数组将围绕单词中的第一个元音进行拆分。然后,您可以根据第一个元音是第一个字符、最后一个字符、介于两者之间的某个位置,甚至是找不到的地方(请记住,并非所有单词都包含这五个元音中的一个),将这些片段重新排列成正确的顺序


(请注意,
split
将删除找到的第一个元音,因此您必须使用
word
将该元音取回,但第一个片段的大小也将是该元音在
word
中的索引)

一种可能实现您想要的功能的方法,这有点有趣:

假设您正在将
word
转换为pig拉丁语,那么使用
word.split(“[aeiouAEIOU]”,2)
怎么样?查看
split
的文档,它将与正则表达式精确匹配一次,因此返回的字符串数组将围绕单词中的第一个元音进行拆分。然后,您可以根据第一个元音是第一个字符、最后一个字符、介于两者之间的某个位置,甚至是找不到的地方(请记住,并非所有单词都包含这五个元音中的一个),将这些片段重新排列成正确的顺序


(请注意,
split
将删除找到的第一个元音,因此您必须使用
word
将该元音取回,但第一个片段的大小也将是该元音在
word
中的索引)

以下是一些单行例程,用于检测某个字符是辅音还是元音:

private static boolean isVowel(char c) {
    return "aeiouAEIOU".contains(String.valueOf(c));
}

private static boolean isConsonant(char c) {
    return "bcdfghjklmnpqrstvwxyzBCDFGHJKLMNPQRSTVWXYZ".contains(String.valueOf(c));
}

以下是一些单行例程,用于检测某个字符是辅音还是元音:

private static boolean isVowel(char c) {
    return "aeiouAEIOU".contains(String.valueOf(c));
}

private static boolean isConsonant(char c) {
    return "bcdfghjklmnpqrstvwxyzBCDFGHJKLMNPQRSTVWXYZ".contains(String.valueOf(c));
}

大学作业?:)所有这些GUI内容似乎与问题无关。试着写一篇文章,如果人们不需要找出你的代码中与问题相关的部分,他们会更愿意阅读并帮助你。我真的不明白为什么人们会在代码中添加新的换行符。为什么不把它保持小而简单呢P大学作业?:)所有这些GUI内容似乎与问题无关。试着写一篇文章,如果人们不需要找出你的代码中与问题相关的部分,他们会更愿意阅读并帮助你。我真的不明白为什么人们会在代码中添加新的换行符。为什么不把它保持小而简单呢p这将和你的工作时间一样长