Проблема с заменой текста

#android #string #replace

#Android #строка #заменить

Вопрос:

Как заменить текст без замены символа между словами,

String test = "This is the test String for replace is best";

 txtReplaceText.setText(test.replace("is","    "));
  

введите описание изображения здесь

Вот результат, который я не хочу удалять «Это«

Комментарии:

1. Сколько у вас случаев «is»? Этот формат этого примера всегда одинаков? Всегда ли слово «is» находится на второй позиции?

2. На самом деле строка не исправлена, а также замена слова не исправлена

3. Вы могли бы разделить строку, удалить «is», а затем соединить ее снова. Или вы могли бы выполнить поиск по «is». Но, поскольку ваше единственное слово «is» может быть окружено другими символами, кроме пробелов (точки, восклицательные знаки, табуляции …) … вы можете захотеть использовать регулярное выражение.

4. я пытаюсь это «есть», но не работает, строка bcoz не соответствует

5. Вы присвоили это переменной? Глядя на документацию , String.replace похоже, что она не заменяет ее встроенной. Он заменяет, а затем возвращает преобразованную строку. Итак String str = test.replace(" is ", " "); txtReplaceText.setText(str) .

Ответ №1:

Вы можете использовать regex :

 String test = "This is the test String for replace is best";
String regex = "(?<=^| )is(?= |$)";
String output = test.replaceAll(regex, " yourNewString ");
System.out.println(output);
  
  • (?<=^| ) соответствует началу строки или пробелу
  • (?= |$) соответствует концу строки или пробелу

Вы можете добавить больше символов в регулярное выражение, чтобы соответствовать вашим потребностям, например, "(?<=^| )is(?= |\!|\?|,|.|$)" чтобы соответствовать концу предложения.

Он должен вернуть:

 "This yourNewString the test String for replace yourNewString best"
  

Лучшие