Ответ 1
replaceText = replaceText.replace(' ', '-');
Строки immutable, они не могут быть изменены после создания. Все методы, которые каким-то образом изменяют строку, возвращают новую строку с внесенными изменениями.
Я пытаюсь заменить символ пробела на дефис, который у меня есть в моей строке.
String replaceText = "AT AT";
replaceText.replace(' ', '-');
но когда я это делаю, я не могу заменить персонажа. Я попробовал метод replaceAll()
, и он тоже не работает.
++++++ Ответ +++++++
извините мою ошибку.. результат позднего ночного программирования: (
спасибо за ответ, я не могу ответить на все, поэтому я проверю первый ответ
replaceText = replaceText.replace(' ', '-');
replaceText = replaceText.replace(' ', '-');
Строки immutable, они не могут быть изменены после создания. Все методы, которые каким-то образом изменяют строку, возвращают новую строку с внесенными изменениями.
Вам нужно сохранить значение, возвращаемое replace()
. Если вы хотите заменить несколько случаев, используйте replaceAll()
.
String replaceText = "AT AT";
replaceText = replaceText.replaceAll(" ", "-");
Как @Mark Peters указывает в комментариях, replace(Char, Char)
достаточно (и быстрее) для замены всех вхождений.
String replaceText = "AT AT";
replaceText = replaceText.replace(' ', '-');
В случае, если этот факт вас беспокоит: неизменность - это Good Thing
.
replace
и replaceAll
методы возвращают String с замененным результатом. Используете ли вы возвращаемое значение или ожидаете изменения строки replaceText
? Если это последнее, вы не увидите изменения, потому что Строки immutable.
String replaceText = "AT AT";
String replaced = replaceText.replace(' ', '-');
// replaced will be "AT-AT", but replaceText will NOT change
Метод replace возвращает String, поэтому вам нужно повторно назначить строковую переменную i.e.
String replaceText = "AT AT";
replaceText = replaceText.replace(' ', '-');
Строки неизменяемы. Вам нужно использовать возвращаемое значение для замены:
replaceText = replaceText.replace(' ', '-');
/*You can use below method pass your String parameter and get result as String spaces replaced with hyphen*/
private static String replaceSpaceWithHypn(String str) {
if (str != null && str.trim().length() > 0) {
str = str.toLowerCase();
String patternStr = "\\s+";
String replaceStr = "-";
Pattern pattern = Pattern.compile(patternStr);
Matcher matcher = pattern.matcher(str);
str = matcher.replaceAll(replaceStr);
patternStr = "\\s";
replaceStr = "-";
pattern = Pattern.compile(patternStr);
matcher = pattern.matcher(str);
str = matcher.replaceAll(replaceStr);
}
return str;
}
Если вы заменяете многие строки, которые вы хотите использовать для создания производительности StringBuilder.
String replaceText = "AT AT";
StringBuilder sb = new StringBuilder(replaceText);
sb.Replace(' ', '-');