我正在尝试编写能够使字符串中的所有元音加倍的代码。所以如果字符串是hello,它将返回heelloo。 这就是我目前所拥有的:
public String doubleVowel(String str)
{
for(int i = 0; i <= str.length() - 1; i++)
{
char vowel = str.charAt(i);
if(vowel == 'a' || vowel == 'e' || vowel == 'i' || vowel == 'o' || vowel == 'u')
{
}
}
}
答案 0 :(得分:13)
您只需拨打String.replaceAll(String, String)
即可使用正则表达式,而您的方法可能为static
,因为您不需要任何实例状态(也可以忘记大写元音)。像
public static String doubleVowel(String str) {
return str.replaceAll("([AaEeIiOoUu])", "$1$1");
}
$1
匹配()
中表达的第一个(唯一)模式分组。
答案 1 :(得分:5)
您需要创建一个临时额外字符串(构建器)并将元音两次添加到该局部变量,然后将其返回:
public String doubleVowel(String str)
{
StringBuilder sb = new StringBuilder();
for(int i = 0; i <= str.length() - 1; i++)
{
char vowel = str.charAt(i);
if(vowel == 'a' || vowel == 'e' || vowel == 'i' || vowel == 'o' || vowel == 'u')
{
sb.append(vowel); // add it to the string
}
sb.append(vowel); // add any character always, vowels have been added already, resulting in double vowels
}
return sb.toString();
}
答案 2 :(得分:4)
让我也为这些好的答案添加一个不涉及正则表达式或StringBuilders
/长or
比较的解决方案,以便您可以选择最适合您需求的解决方案。
public String doubleVowel(String str)
{
String vow = "aeiou";
for (int i = 0; i < str.length(); i++) {
if (vow.indexOf(str.charAt(i)) != -1) {
str = str.substring(0, i + 1) + str.substring(i++, str.length());
}
}
return str;
}