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

标签 java string

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

相关文章:

用二进制 : binary content got truncated when hit 0x00 连接字符串

javascript - 正则表达式从字符串中删除数字(仅限年份)

c# - 将字符串解析为 int,XSL 样式表内的 C#

java - == on Java 中的 String 不符合预期?

java - 如何根据屏幕分辨率调整布局和 ScrollView 的大小

java - 从头开始的链表类与默认链表类?

JavaFX 场景构建器 2 : controller class

java - 如何禁用在后台服务中运行的通知

java - Spring Boot Starter-Web 在启动时尝试连接 Mongo

c - 将指针的一个元素分配给同一指针的另一个元素