我想我在这里遗漏了一些东西 - string.replace()

时间:2010-11-24 04:52:55

标签: java string replace

我有代码

String txt = "<p style=\"margin-top: 0\">";
txt.replace("style=\"margin-top: 0\"","class=\"style_" + i + "\"");

在for循环中(这就是我的目的),但是当我运行它时,没有任何东西被替换。我使用这个错了吗?

3 个答案:

答案 0 :(得分:8)

它应该是这样的:

String txt = "<p style=\"margin-top: 0\">";
txt = txt.replace("style=\"margin-top: 0\"","class=\"style_" + i + "\"");

“String”是一个不可变类型,这意味着String上的方法不会更改String本身。更多信息 - http://en.wikipedia.org/wiki/Immutable_object

答案 1 :(得分:2)

replace方法不会修改调用它的字符串,而是返回对修改后的字符串的引用。

如果您希望txt引用修改过的字符串,您可以这样做:

txt = txt.replace("style=\"margin-top: 0\"","class=\"style_" + i + "\"");

如果您希望txt继续引用原始字符串,并希望使用其他引用来引用已更改的字符串,则可以执行以下操作:

String new_txt = txt.replace("style=\"margin-top: 0\"","class=\"style_" + i + "\"");

答案 2 :(得分:1)

String是一个不可变类,这意味着String对象的实例方法不会改变字符串本身。您必须收集这些实例方法的返回值。