Java 将字符串1替换为第二个字符串的实例remove,并替换为第三个字符串,而不使用replaceAll
这是我想到的,但是最后一个测试用例不起作用。有什么建议吗Java 将字符串1替换为第二个字符串的实例remove,并替换为第三个字符串,而不使用replaceAll,java,string,replace,Java,String,Replace,这是我想到的,但是最后一个测试用例不起作用。有什么建议吗 public class tester { public static String replaceAll(String a, String b, String c){ for(;;){ int i = a.indexOf(b); if(i==-1){ break; } a = a.subst
public class tester
{
public static String replaceAll(String a, String b, String c){
for(;;){
int i = a.indexOf(b);
if(i==-1){
break;
}
a = a.substring(0,i)+ c + a.substring(i + b.length());
}
return a;
}
public static void main(String args[]){
System.out.println(replaceAll("hello my friend, how are you?", "h", "y"));
System.out.println(replaceAll("CS221 is great!!","great","awesome"));
System.out.println(replaceAll("aaaa","a","aaa"));
}
}
假设我正确阅读了您的代码:
StringBuilder
来防止复制负载
也就是说,这样的事情应该会起作用:
public static String replaceAll(String a, String b, String c){
StringBuilder sb = new StringBuilder();
int i = 0;
while(i < a.length()){
int j = a.indexOf(b, i);
if(j == -1){
sb.append(a.substring(i, a.length()));
i = a.length();
} else {
sb.append(a.substring(i, j));
sb.append(c);
i = j + b.length();
}
}
return sb.toString();
}
公共静态字符串replaceAll(字符串a、字符串b、字符串c){
StringBuilder sb=新的StringBuilder();
int i=0;
而(i
编辑-添加的解决方案。它应该做的是读取第一个字符串,然后读取第一个“a”,并用三个a替换。然后再做三次。因此,对于replaceAll的最后一个方法调用(“aaaa”、“a”、“aaa”)。它应该打印为“aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa。对于这三种情况,它看起来不错,但可能并不完全正确。有没有一种方法可以在不使用StringBuilder的情况下编写此代码。我们还没有在课堂上复习过StringBuilders。否则,您可以解释它,以便我理解.append方法在做什么。再次感谢您的帮助。
StringBuilder
基本上执行字符串连接,而不会复制整个字符串。您可以将其视为在内存中保存字符串列表,并且仅在调用toString()
时才将它们连接在一起。因此,您只需启动一个临时字符串,并在使用+
时将其附加到该字符串中,然后在末尾将其作为输出返回。