Заменить пробел на дефис - PullRequest
17 голосов
/ 10 марта 2011

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

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

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

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

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

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

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

Ответы [ 7 ]

32 голосов
/ 10 марта 2011
replaceText = replaceText.replace(' ', '-');

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

10 голосов
/ 10 марта 2011

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

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

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

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

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

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

5 голосов
/ 10 марта 2011

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

String replaceText = "AT AT";                         
replaceText = replaceText.replace(' ', '-'); 
5 голосов
/ 10 марта 2011

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

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

// replaced will be "AT-AT", but replaceText will NOT change
3 голосов
/ 10 марта 2011

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

replaceText = replaceText.replace(' ', '-');
1 голос
/ 20 апреля 2016
/*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;
}
0 голосов
/ 02 апреля 2014

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

String replaceText = "AT AT";
StringBuilder sb = new StringBuilder(replaceText);
sb.Replace(' ', '-');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...