Java-如何仅双元音
我正在尝试编写代码,使字符串中的所有元音都加倍。因此,如果字符串是hello,它将返回heelloo。 这就是我目前拥有的:Java-如何仅双元音,java,Java,我正在尝试编写代码,使字符串中的所有元音都加倍。因此,如果字符串是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'
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')
{
}
}
}
公共字符串双元音(String str)
{
对于(int i=0;i您需要创建一个临时的额外字符串(生成器),并向该局部变量添加两次元音,然后返回它:
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();
}
公共字符串双元音(String str)
{
StringBuilder sb=新的StringBuilder();
对于(int i=0;i您可以使用一个正则表达式,只需对进行一次调用,您的方法可能是static
,因为您不需要任何实例状态(另外,不要忘记大写元音)
public static String doubleVowel(String str) {
return str.replaceAll("([AaEeIiOoUu])", "$1$1");
}
如果$1
与()
中表示的第一个(唯一的)模式分组相匹配,那么我还要为这些好的答案添加一个不涉及regex或StringBuilders
/long或
比较的解决方案,以便您可以选择最适合您需要的解决方案
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;
}
公共字符串双元音(String str)
{
字符串vow=“aeiou”;
对于(int i=0;i
由于String
是不可变的,因此您必须在构建输出时使用某种临时结构。StringBuilder
就是为了这个目的而创建的。我认为您应该添加一点关于$1
的内容,这是每个人都喜欢正则表达式的好东西,或者您可以使用(?I)[aeiou])
。无论如何,这是一个非常好的答案:)回答很好,但你不应该给变量命名为元音,因为当if
语句为true时,它只是一个元音。只需给它命名为c
或ch
。请注意,尽管功能正确,但这是非常低效的,从性能上看。--此外,删除字符()
从串联调用并将++i
更改为i++
。确实如此,谢谢,我很快就完成了,没有注意到。已修复。