java如何找到字符串中第一个元音的索引?
我希望实现此部分,但不知道如何实现: 在猪拉丁语中,直到第一个元音的所有辅音都应该移到单词的末尾。所以,虽然“笔记本”仍然是“aptoplay”,但“string”应该变成“ingstary”
我有这个,第一部分很好用
public static String doStuff(String word) {
int number = 0;
char[] vowel = { 'a', 'e', 'i', 'o', 'u' };
char first = word.charAt(0);
char second = Character.toLowerCase(first);
if (second == 'a' || second == 'e' || second == 'i' ||
second == 'o' || second == 'u') {
word = word + "ay";
} else {
for (int i = 0; i < word.length(); i++) {
for (int j = 0; j < 5; j++) {
if (word.charAt(i) == vowel[j]) {
word = word.substring(i + 1) + word.substring(i) + "ay";
break;
}
}
}
return word;
}
# 1 楼答案
首先,你的
break
应该打破这两个循环。为此,在第一个循环前放置一个标志,如然后代替
break;
放break outerloop;
第二,
不起作用,因为当你找到元音时,你想把它放在前面,所以
i + 1
应该是i
。然后,“ay”之前的子串的其余部分应该是开头的辅音,因此0, i
而不仅仅是i
。总的来说,这给了# 2 楼答案
我是新来的,所以不太了解这些惯例。无论如何,下面的代码应该能够帮助您实现所需的转换
使用元音列表可以提供“contains”操作,与嵌套循环相比,该操作更易于理解代码。但在处理方面没有优势
在下面的代码中,inp是输入字符串
编辑:没有意识到“.contains”可以与字符串一起使用,也可以由Shar1er80完成。现在的堆栈交换不只是学习;)
# 3 楼答案
检查字符串的长度,检查“aeiou”是否是拆分点处的字符之一。如果是,则相应地重新结束字符串,否则继续下一个字符
# 4 楼答案
你不必使用列表。还有很多其他选项(比如在
if
语句中使用一堆||
)。另外,如果可能的话,最好将List
放在方法之外,这样就不需要在每次调用方法时都创建它# 5 楼答案
只需遍历字符串,直到碰到第一个元音,这将为
String.substring()
提供所需的索引值只需将doStuff()方法更改为以下内容:
结果:
# 6 楼答案