gpt4 book ai didi

Java 字符串操作/新字符串创建

转载 作者:行者123 更新时间:2023-11-29 04:21:21 24 4
gpt4 key购买 nike

我目前正在创建一个将字符串变量带入我的方法的程序,该字符串变量被复制到我创建的新字符串变量中。然后它获取我的新字符串变量并检查我的字符串中的任何元音。然后它获取元音并使用我的 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com