java - 如果函数有多个参数,如何在不使用 replace 方法的情况下替换 java 中的子字符串?
问题描述
我正在编写一个函数,它将返回一个字符串,其中一个子字符串的所有实例都替换为一个较小的子字符串。例如,如果用户输入字符串“aabaacaaa”,输入“aa”作为单词,输入“a”作为应该返回“abacaa”的字母。我的只是返回“aabaacaaa”。
问题是当函数有超过2个参数时,我还没有找到替换字符串的方法,而不使用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;
}
推荐阅读
- xml - 如何在 Groovy 中解析 XML 注释?
- solrcloud - Spring data solr & Solr 云支持
- javascript - Html -- 如何为输入文本字段添加编辑器?
- python-3.x - 为什么这段代码不打印单个索引?
- java - JPA:如何从另一个模式生成实体?
- javascript - 动态表中的 Onchange 仅更新第一行中的输入文本框
- tfs-2017 - TFS 2017.1 中缺少 Nuget 服务端点
- python - 如何在图形(.pb)中重新训练模型?
- office-js - Office javascript中的文档保存事件
- android - 从片段中引用 recyclerView 元素