Заменить пространство на Hyphen

Я пытаюсь заменить символ пробела на дефис, который у меня есть в моей строке.

String replaceText = "AT AT";
replaceText.replace(' ', '-');

но когда я это делаю, я не могу заменить персонажа. Я попробовал метод replaceAll(), и он тоже не работает.

++++++ Ответ +++++++

извините мою ошибку.. результат позднего ночного программирования: (

спасибо за ответ, я не могу ответить на все, поэтому я проверю первый ответ

replaceText = replaceText.replace(' ', '-');

Ответы

Ответ 1

replaceText = replaceText.replace(' ', '-');

Строки immutable, они не могут быть изменены после создания. Все методы, которые каким-то образом изменяют строку, возвращают новую строку с внесенными изменениями.

Ответ 2

Строки неизменяемы.

Вам нужно сохранить значение, возвращаемое replace(). Если вы хотите заменить несколько случаев, используйте replaceAll().

String replaceText = "AT AT";
replaceText = replaceText.replaceAll(" ", "-");

Как @Mark Peters указывает в комментариях, replace(Char, Char) достаточно (и быстрее) для замены всех вхождений.

String replaceText = "AT AT";
replaceText = replaceText.replace(' ', '-');

В случае, если этот факт вас беспокоит: неизменность - это Good Thing.

Ответ 3

replace и replaceAll методы возвращают String с замененным результатом. Используете ли вы возвращаемое значение или ожидаете изменения строки replaceText? Если это последнее, вы не увидите изменения, потому что Строки immutable.

String replaceText = "AT AT";
String replaced = replaceText.replace(' ', '-');

// replaced will be "AT-AT", but replaceText will NOT change

Ответ 4

Метод replace возвращает String, поэтому вам нужно повторно назначить строковую переменную i.e.

String replaceText = "AT AT";                         
replaceText = replaceText.replace(' ', '-'); 

Ответ 5

Строки неизменяемы. Вам нужно использовать возвращаемое значение для замены:

replaceText = replaceText.replace(' ', '-');

Ответ 6

/*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;
}

Ответ 7

Если вы заменяете многие строки, которые вы хотите использовать для создания производительности StringBuilder.

String replaceText = "AT AT";
StringBuilder sb = new StringBuilder(replaceText);
sb.Replace(' ', '-');