如果函数有多个参数,我如何在不使用replace方法的情况下替换java中的子字符串



我正在编写一个函数,该函数将返回一个字符串,其中子字符串的所有实例都被一个较小的子字符串替换。例如,如果用户输入字符串"0";aabaacaaa";,输入";aa";并输入";a";对于信件,它应该返回";abacaa";。我的只是回来了"aabaacaaa";。

问题是,当函数有两个以上的参数时,我还没有找到一种不使用replace方法来替换字符串的方法。我看到的所有例子都有一个或两个参数,从来没有更多。这是我现在的密码。

public static String replaceWordWithLetter(String str, String word, String c)
{
//This method will return 'str' with all instances of 'word' replaced by letter 'c'.

String result = "";

for(int i = 0; i < str.length(); i++){
if(str.substring(i, i+1).equals(word))
{
if(word.substring(i, i+1).equals(c))
{
word = c;
result = result + word;
}
}
else{
result += str.substring(i,i+1);
}
}

return result;
}

我认为最简单的方法是使用String.index方法。请注意,此解决方案将使用一个大于字母的字符串。而且它是区分大小写的。

String ss = replaceWordWithLetter("aabaacaaa", "aa","a");
System.out.println(ss);

打印

abacaa
  • 获取字符串中单词的索引
  • 将此之前的所有内容附加到当前结果
  • 附加替换字符串
  • 将原始字符串替换为单词位置后的字符串(即单词+wlength(。因此,原始字符串现在开始于找到的单词之后
  • 继续,直到找不到要替换的单词为止(indexOf返回-1(
public static String replaceWordWithLetter(String str, String word, String c) {
String result = "";
int idx = 0;
int wlength = word.length();
while ((idx = str.indexOf(word)) >= 0) {
result += str.substring(0, idx)+c;
str = str.substring(idx+wlength);
}
return result+str;
}

最新更新