用数字越来越多的字母替换字符串中的元音

时间:2014-11-09 23:53:15

标签: java string replace

我正在试图找出一种方法来取一个字符串并用越来越多的数字替换所有元音。

例如:

"abcdef" --> "0bcd1f"

我尝试用单个符号替换所有元音,然后尝试用越来越多的数字替换每个符号。但这不起作用,因为我将word2设置为仅用于实例的东西。

public static String getNumberString( String s) {
    String word = s;
    String word1 = word.replaceAll("[AEIOUaeiou]", "@");
    int c = 0;

    for( c = 0; c <= word.length(); c++) {
        String word2 = word1.replaceFirst("@", Integer.toString(c));
    }

    return "";
}

任何帮助表示感谢。

2 个答案:

答案 0 :(得分:1)

以下应该工作。截至目前,你总是返回空字符串。

除此之外,在java String中是不可变的,因此您需要更新word2以在每次迭代中具有不同的String值。

 public static String getNumberString( String s)
 {
     String word = s;
     String word1 = word.replaceAll("[AEIOUaeiou]", "@");
     int c = 0;

     String word2 =  word1;
     for( c = 0; c <= word.length(); c++)
     {
           word2 = word2.replaceFirst("@", Integer.toString(c));
     }

     return word2;
 }

答案 1 :(得分:1)

这是有效的,并且是相当整洁的代码:

public static String getNumberString(String s) {
    for (int i = 0; s.matches(".*[AEIOUaeiou].*"); i++)
        s = s.replaceFirst("[AEIOUaeiou]", Integer.toString(i));
    return s;
}

为什么它花了很少的代码:

  • 仅在需要时存在变量
  • 变量范围最小化
  • 已删除不必要的步骤(特别是首先用'@'替换所有元音)
  • for loop表示增加元音数量并测试循环终止