我有一个ArrayList,其中包含一系列以&#34形式的笔记;取出垃圾","做菜"我有一个注释类,其中有一个方法应该找到并替换用户给出的第一个字符串,例如" do",在每个音符中(如果有的话)并替换该字符串与用户给出的新字符串。例如:如果我有多个音符以#34开头,那么x" "做"在每个笔记中应该变成"不要"。到目前为止,这是我的方法:
public void findAndReplaceFirst(String old, String newWord) {
for (int i = 0; i < notes.size(); i++) {
String note = notes.get(i);
if (note.contains(old)) {
int loc = note.indexOf(old);
int len = old.length();
String temp = note.substring(0, loc ) + note.substring(loc + len, note.length());
String newString = temp.substring(0, loc) + newWord + temp.substring(loc, temp.length());
} else {
String newString = note;
}
}
}
然而,当我运行main方法时,一串音符没有变化,我不明白为什么。有人能告诉我方法在哪里犯了错误吗?
答案 0 :(得分:2)
String保持不变,因为Java不允许将变量传递给方法。在Java中,所有对象都按值传递给方法。您必须从newString
方法返回findAndReplaceFirst
。
您还可以使用String类中定义的replaceFirst
方法:
public String replaceFirst(String regex, String replacement);
假设您要使用某些用户输入替换所有出现的“do”,以下代码使用List
的{{1}}方法替换特定索引处的元素。
< / p>
假设set(int index, E element)
是notes
的类型或子类型:
List<String>
答案 1 :(得分:1)
您创建了一个名为newString
的已修改字符串,但实际上您必须使用set()
将其放回列表中。在for循环结束之前,添加notes.set(i, newString);
。