所以我正在编写一个名为“pig latin”的游戏的程序(您可以查看维基百科的规则,但它包括取第一个辅音并将它们移到单词的后面并添加 -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];
}
}
这是一个例子:
“glove”这个词应该变成 oveglay 。我的程序输出“lovegay”。
这是我的程序(减去导入
和GUI
内容):
public class PigLatin extends JFrame implements ActionListener {
JTextField word = new JTextField(25);
JButton GO = new JButton("Go");
JLabel output = new JLabel();
String CharNum1;
String CharNum2;
//The frame setup should be here
public void isConsonant(String verify) {
char[] consonants = { 'b', 'c', 'd', 'f', 'g', 'h', 'j', 'k', 'l', 'm',
'n', 'p', 'q', 'r', 's', 't', 'v', 'w', 'x', 'z' };
char[] StringArray = verify.toCharArray();
for (int dex = 0; dex < StringArray.length; dex++) {
char current = StringArray[dex];
}
}
public void game() {
// The actual word
String word2 = word.getText();
// The first character
CharNum1 = word2.substring(0, 2);
CharNum2 = word2.substring(1, word2.length());
// Remove the first char
// String RevampedWord = word2.replace(CharNum1, "");
String finalWord = CharNum2 + "-" + CharNum1 + "ay";
output.setText(finalWord);
}
public void actionPerformed(ActionEvent event) {
game();
}
public static void main(String[] arguments) {
PigLatin pig = new PigLatin();
}
}
所以我的问题是是否可以查看一个字符串是否包含辅音并将第一个辅音的子串制作为元音之前的第一个辅音。
提前致谢。
最佳答案
你找错了树...使用正则表达式:
提取第一个元音之前的所有辅音:
String initialConsonants = str.replaceAll("([^aeiouAEIOU]*).*", "$1");
仅提取辅音:
String onlyConsonants = str.replaceAll("[aeiouAEIOU]", "");
或者如果您确实需要知道文本是否都是辅音:
boolean isAllConsonants = str.matches("[^aeiouAEIOU]+");
关于java - java检查字符串中是否有辅音,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17440444/