Я думаю, что я что-то здесь упускаю - string.replace () - PullRequest
4 голосов
/ 24 ноября 2010

У меня есть код

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

В цикле for (для которого и предназначен i), но когда я запускаю его, ничего не заменяется. Я использую это неправильно?

Ответы [ 3 ]

8 голосов
/ 24 ноября 2010

Это должно выглядеть так:

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.

2 голосов
/ 24 ноября 2010

Метод 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 + "\"");
1 голос
/ 24 ноября 2010

String является неизменным классом, что означает, что методы экземпляра объекта String не изменяют саму строку. Вы должны собрать возвращаемое значение этих методов экземпляра.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...