Java 用自动递增的数字替换字符串中的特定模式
我有一个字符串,如“你好你好你好” 我想用一个自动递增的数字替换上述字符串中出现“Hello”的次数 这样的结果将是: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
“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;
}
}