замените все + -

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

String str = "word+word";
str.replaceAll('+ ', '-');

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

1
какое исключение?
добавлено автор Narendra Pathai, источник
+ специальный символ в регулярных выражениях. Просто избегите его.
добавлено автор varevarao, источник
скорее всего вследствие того, что ' + ' специальный символ в regex
добавлено автор Snakes and Coffee, источник

6 ответы

Использовать

str = str.replaceAll("\\+", "-");

Несколько ошибок в вашем коде:

  • replaceAll takes strings, not chars
  • the + char must be escaped as the first argument is a regular expression (and \ itself must be escaped in java string literals)
  • you must take the return of the function : as String is immutable the function doesn't change it but returns another string
4
добавлено
@Keyser +1, я precised это в моем ответе, чтобы сделать его более ясным.
добавлено автор Denys Séguret, источник
И вы избежали возможности избежать, потому что, вы знаете, Ява.
добавлено автор keyser, источник

Просто используйте , заменяют :

str = str.replace('+', '-');

This one doesn't work on regex but take characters as they are.
Also as you see you have to reassing value again to your str variable because String in Java are immutable. In this case method replace doesn't change current String (str) but create new one with replaced + to '-'.

4
добавлено

replaceAll функция берет регулярное выражение как его первый аргумент. Это так происходит, что + является специальным символом на языке регулярных выражений. Попытайтесь заменить + с \\+ . Это избежит знака "плюс", таким образом делая код, чтобы рассматривать его как обычный символ.

Кроме того, replaceAll метод приводит к последовательности, так, чтобы не работал. Попытайтесь делать:

String str = "word+word";
str = str.replaceAll("\\+ ", "-");
1
добавлено

'replaceAll' для регулярных выражений, и последовательности неизменны. Используйте:

str = str.replace("+", "-");

вместо этого...

1
добавлено

Если вы не уверены в escape-последовательности, необходимо использовать,

Вы могли просто сделать это.

str = str.replaceAll(Pattern.quote("+"), "-");

Это автоматически убежит, regex предопределил символы, чтобы соответствовать буквальным способом

0
добавлено

Используйте "" в противоположность '' в replaceAll.

Последовательность java.lang. String.replaceAll (Натягивают regex, замену Последовательности),

0
добавлено
pro.jvm
pro.jvm
3 503 участник(ов)

Сообщество разработчиков Java Scala Kotlin Groovy Clojure Чат для нач-их: @javastart Наш сайт: projvm.com projvm.ru Наш канал: @proJVM Вакансии: @jvmjobs Конфы: @jvmconf

Java & Co
Java & Co
2 370 участник(ов)

Можно обсуждать с матом и без всё, что касается жабы, вплоть до холиваров. НЕ ИМЕЕТ ОТНОШЕНИЯ К САЙТУ JAVARUSH.RU ПРАВИЛА - https://t.me/javarush/75723 Вакансии сюда - https://telegram.me/joinchat/B7IzvUCnfo6d8t3yIxKguQ По вопросам - @thedude

learn.java
learn.java
1 888 участник(ов)

Чат для начинающих и не только Статистика: https://combot.org/chat/-1001083535868 Основной чат - @jvmchat

Java Underground
Java Underground
169 участник(ов)

https://vk.com/javatutorial

Javanese Questions
Javanese Questions
109 участник(ов)

Чат предназначен для обмена знаниями строго в формате в вопрос-ответ. Тема — Java, Kotlin и Android. Вопрос должен быть предварительно прогуглен, понятно и грамотно сформулирован, помечен хэштегами. Ответ — тем более. Куски кода размером в несколько строк можно писать прямо здесь, для больших кусков кода стоит использовать http://gist.github.com/, http://pastebin.com/, https://codeshare.io/ или любой аналогичный сервис. В некоторых случаях можно прикреплять скриншоты. Стикеры и гифки запрещены. Дополнять и уточнять вопросы и ответы — редактированием исходного сообщения. Обсуждения должны приводить к редактированию вопроса/ответа и удаляться. По хештегам можно искать существующие вопросы и овтеты: #вопрос #ответ #git #generics #java #server #awt #javafx #swing #kotlin #anko #tornadofx #ktor #android #recyclerView #performance #arch #network #permissions #storage #async