我目前正在创建一个将字符串变量带入我的方法的程序,该字符串变量被复制到我创建的新字符串变量中。然后它获取我的新字符串变量并检查我的字符串中的任何元音。然后它获取元音并使用我的 replaceAll()
方法将它们加倍。我目前一直在研究如何将非元音字母增加三倍。因此,例如,"easy!!"
的输出应该是 "eeaasssyyy!!!!!!
。
我正在寻找一种简单的方法来做到这一点——有什么建议吗?我是编程的新手,字符串让我很困惑。
public class RepeactChars
{
public static void main(String[] args)
{
System.out.println(repeatChars("easy!!"));
System.out.println(repeatChars("abc"));
System.out.println(repeatChars("apple"));
System.out.println(repeatChars("Homework"));
System.out.println(repeatChars("Spring"));
System.out.println(repeatChars("Integer"));
}
public static String repeatChars(String x)
{
String str = x;
str = str.replaceAll("a", "aa");
str = str.replaceAll("e", "ee");
str = str.replaceAll("i", "ii");
str = str.replaceAll("o", "oo");
str = str.replaceAll("u", "uu");
return str;
}
}
最佳答案
我会使用两个正则表达式;以相反的顺序,一个是三倍的辅音(所有不是 aeiou
),一个是双倍的元音(aeiou
)。喜欢,
public static String repeatChars(String x) {
return x.replaceAll("([aeiou])", "$1$1").replaceAll("([^aeiou])", "$1$1$1");
}
我明白了
eeaasssyyy!!!!!!
aabbbccc
aapppppplllee
HHHoommmeewwwoorrrkkk
SSSppprrriinnnggg
IIInnnttteegggeerrr
为了完整起见,您还可以使用 StringBuilder
来实现它,这是 switch
case
存在的地方一个优雅的解决方案(至少在我看来)。例如,
public static String repeatChars(String x) {
StringBuilder sb = new StringBuilder();
for (char ch : x.toCharArray()) {
switch (ch) {
case 'a': case 'e': case 'i': case 'o': case 'u':
sb.append(ch).append(ch);
break;
default:
sb.append(ch).append(ch).append(ch);
break;
}
}
return sb.toString();
}
输出相同。
关于Java 字符串操作/新字符串创建,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48959417/