Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/391.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 用自动递增的数字替换字符串中的特定模式_Java - Fatal编程技术网

Java 用自动递增的数字替换字符串中的特定模式

Java 用自动递增的数字替换字符串中的特定模式,java,Java,我有一个字符串,如“你好你好你好” 我想用一个自动递增的数字替换上述字符串中出现“Hello”的次数 这样的结果将是:“1 2怎么是3” “Hello”可以出现任意次数尝试以下简单方法: public static String transform(String input) { StringBuilder stringBuilder = new StringBuilder(); int i = 1; for (String s : input.split("Hello

我有一个字符串,如“你好你好你好” 我想用一个自动递增的数字替换上述字符串中出现“Hello”的次数

这样的结果将是:
“1 2怎么是3”


“Hello”
可以出现任意次数

尝试以下简单方法:

public static String transform(String input) {
    StringBuilder stringBuilder = new StringBuilder();
    int i = 1;

    for (String s : input.split("Hello")) {
        stringBuilder.append(String.format("%s %d", s, i++));
    }

    return stringBuilder.toString();
}
样本使用
我不知道,我觉得有必要使用递归

public class StringReplacement {

    private static final String HELLO = "Hello";

    /**
     * @param args
     */
    public static void main(String[] args) {
        String stringToTransform = "Hello how Hello are Hello";
        System.out.println(transform(stringToTransform));
    }

    private static String transform(String stringToTransform) {
        return transform(stringToTransform, 1);
    }

    private static String transform(String stringToTransform, int counter) {

        String output = stringToTransform.replaceFirst(HELLO, String
                .valueOf(counter));

        if (output.contains(HELLO))
            return transform(output, ++counter);
        else
            return output;
    }

}

我其实想要一些不同的东西…我很抱歉错误地提出了这个问题,我想要像这样的“你好,你好,你好吗?”请帮助您的测试用例不测试任何东西。你怎么知道被测试的函数工作?嗨,我使用的是JDK1.3,所以它不支持“String.format”Plzsuggest@Gourav:因此您必须使用
StringBuffer
,而不是
StringBuilder
,并执行类似操作来代替
String.format
StringBuffer.append(s).append(“”).append(String.valueOf(i++)
;有些人在遇到问题时会想“我知道,我会使用递归。”现在他们有两个问题:字符串上的“contains()”方法出现编译错误。请帮忙。。!!您之前没有注意到您使用的是1.3,这是一个非常重要的细节。只需将if切换到“output.indexof(HELLO)!=-1”
public class StringReplacement {

    private static final String HELLO = "Hello";

    /**
     * @param args
     */
    public static void main(String[] args) {
        String stringToTransform = "Hello how Hello are Hello";
        System.out.println(transform(stringToTransform));
    }

    private static String transform(String stringToTransform) {
        return transform(stringToTransform, 1);
    }

    private static String transform(String stringToTransform, int counter) {

        String output = stringToTransform.replaceFirst(HELLO, String
                .valueOf(counter));

        if (output.contains(HELLO))
            return transform(output, ++counter);
        else
            return output;
    }

}