Строка, не заменяющая символы

У меня есть предложение, которое передается как строка, и я заменяю слово «и», и я хочу заменить его на «». И это не заменяет слово «и» пробелом. Ниже приведен пример моей логики. И когда я отлаживаю это, логика попадает в предложение.

String sentence = "Define, Measure, Analyze, Design and Verify" if (sentence.contains("and")){ sentence.replace("and", " "); } 

Здесь что-то не хватает.

И когда я отлаживаю это, логика попадает в предложение.

Да, а затем вы отбрасываете возвращаемое значение.

Строки в Java неизменяемы – когда вы вызываете replace , он не изменяет содержимое существующей строки – он возвращает новую строку с изменениями. Итак, вы хотите:

 sentence = sentence.replace("and", " "); 

Это относится ко всем методам в String ( substring , toLowerCase т. Д.). Ни одно из них не меняет содержимое строки.

Обратите внимание, что вам действительно не нужно это делать в состоянии – в конце концов, если предложение не содержит "and" , это не вредит замене:

 String sentence = "Define, Measure, Analyze, Design and Verify"; sentence = sentence.replace("and", " "); 

Строки неизменяемы , то есть их содержимое не может измениться. Когда вы вызываете replace(this,that) вы получаете совершенно новую String. Если вы хотите сохранить эту новую копию, вам нужно назначить ее переменной. Вы можете перезаписать старую ссылку (a la sentence = sentence.replace(this,that) или новую ссылку, как показано ниже:

 public class Test{ public static void main(String[] args) { String sentence = "Define, Measure, Analyze, Design and Verify"; String replaced = sentence.replace("and", ""); System.out.println(replaced); } } 

Отметьте, что я удалил проверку contains() , так как здесь ненужный вызов. Если он не содержит его, заменитель просто не сможет выполнить какие-либо замены. Вам нужно только, чтобы в нем содержался метод, если то, что вы заменяете, отличается от фактического состояния, которое вы проверяете.

Вы ничего не делаете с возвращаемым значением replace . Вам нужно будет назначить результат метода, который является новой String :

 sentence = sentence.replace("and", " "); 

String неизменна в java. Такие методы, как replace возвращают новую String .

Ваш тестовый тест лишний: replace будет просто no-op, если нет экземпляров текста для замены.

Вы должны повторно назначить результат замены, например:

  sentence = sentence.replace("and", " "); 

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

 package com.tulu.ds; public class EmailSecurity { public static void main(String[] args) { System.out.println(returnSecuredEmailID("[email protected]")); } private static String returnSecuredEmailID(String email){ String str=email.substring(1, email.lastIndexOf("@")-1); return email.replaceAll(email.substring(1, email.lastIndexOf("@")-1),replacewith(str.length(),"*")); } private static String replacewith(int length,String replace) { String finalStr=""; for(int i=0;i 
  • BOOST_STATIC_ASSERT без повышения
  • Java String не работает
  • Какой вкус Regex использует Visual Studio Code?
  • Заменить слово несколькими строками с помощью sed?
  • Заменить подстроку на другую подстроку C ++
  • Советы по проблеме java.lang.String.replace?
  • Заменить динамический контент в XML-файле
  • Использование get () с функциями замены
  • Как найти / найти и заменить в стандартной строке?
  • Полоса пропускания и перетаскивания пробелов из строки Java
  • Замена строки в текстовом файле Java
  • Interesting Posts

    Избранные быстрые клавиши Visual Studio

    Оказание другой формы с помощью ajax заставляет его состояние представления потеряться, как мне добавить это обратно?

    Диаграмма рассеяния Excel с группируемыми текстовыми значениями по оси X

    Как подключиться к файлу .mdf (файл базы данных Microsoft SQL Server) в простом веб-проекте?

    Как сохранить разрывы строк при использовании jsoup для преобразования html в обычный текст?

    Неконтролируемая прокрутка

    Правильный способ перемещения объекта GameGbject

    Изменение фонового изображения с помощью анимации CSS3

    Код ошибки мыши 24. Windows 7

    Связывание со статическим classом

    Назначение камеры Android

    Безопасно избавиться от «У вас новая почта в / var / mail» на Mac?

    Как я могу получить ссылку электронной почты на веб-странице, открытой в gmail вместо Outlook?

    В чем разница между int и long на C ++?

    Где я должен помещать аннотацию @Transactional: при определении интерфейса или в classе реализации?

    Давайте будем гением компьютера.