3 回答

TA貢獻1852條經驗 獲得超1個贊
字符串是不可變的所以調用
copyOfTemplate.replace(placeholder, "Hello!");
沒有將它分配給任何有效的東西什么都不做。它返回一個帶有替換的新字符串,您忽略了它。任何半體面的 IDE 都會警告您這一點:
此外,String copyOfTemplate = template
也沒有真正做任何事情。這不是副本。它只是一個指向相同底層字符串的新變量。沒有方法可以復制字符串,因為字符串是不可變的,因此副本變得無用。
你要
String copyOfTemplate = template.replace(placeholder, "Hello!");
我建議閱讀有關字符串的Oracle 教程。您似乎錯過了一些基礎知識。

TA貢獻1847條經驗 獲得超11個贊
我在您的代碼中看到兩個主要問題:
copyOfTemplate.replace(placeholder, "Hello!");
返回一個新字符串,它不會更新它。您必須將其分配給一個新變量。最后的
if
聲明if(!copyOfTemplate.equals(result));
由于您添加了分號,因此 if 不執行任何操作,并且您始終可以訪問該fail()
方法。就好像你寫道:if(!copyOfTemplate.equals(result)) { } 失?。ǎ?

TA貢獻1921條經驗 獲得超9個贊
請使用以下代碼
public static void main(String[] args) {
final StringBuilder placeholder = new StringBuilder("$ph$");
final StringBuilder template = new StringBuilder("<test>" + placeholder + "</test>");
final StringBuilder result = new StringBuilder("<test>Hello!</test>");
replaceString(template, placeholder.toString(), "Hello!");
System.out.println(template);
}
public static void replaceString(StringBuilder sb, String toReplace, String replacement) {
int index = -1;
while ((index = sb.lastIndexOf(toReplace)) != -1) {
sb.replace(index, index + toReplace.length(), replacement);
}
}
添加回答
舉報