2013-10-12 4 views
1

Существует String text System.out.println(text); выглядит следующим образомКак удалить часть текста с помощью replaceAll

So the traveller sat down by the side of that old man, 
face to face with the serene sunset; 
and all his friends came softly back and stood around him. 

Другой String subText

System.out.println(subText); просто часть указанной выше строки и выглядит следующим образом

So the traveller sat down by the side of that old man, 
face to face with the serene sunset; 

Мне нужно избавиться от этого subText часть text = text.replaceAll(subtext, "");, но это ничего не делает с текстом?

+3

Остерегайтесь: String.replaceAll в Java использует регулярные выражения. – luiscubal

+2

Это работает для меня. (Убедитесь, что у вас есть точная вещь в подтексте.) –

+0

, возможно, убедитесь, что подтекст находится в строке перед удалением. может быть опечаткой в ​​вашем подтексте. if (text.contains (subtext)) {do stuff} else {ошибка печати} – sirFunkenstine

ответ

6

В данном конкретном случае это не имеет значения, но вы действительно должны использовать replace вместо replaceAll:

text = text.replace(subtext, ""); 

replaceAll Метод использует регулярные выражения, и некоторые символы имеют особое значение.

В этом конкретном случае вы не увидите никакой разницы, потому что в subtext должно быть что-то не совсем то, что не может быть найдено в text. Возможно, есть лишнее пробел или символ разрыва строки кодируется по-разному. Очень сложно увидеть различия в белом пространстве, смотрящие на выходе, произведенном System.out.println.

2

Причина, по которой она не работает, потому что выражение 'replaceAll() `ожидает, что поисковый запрос будет регулярным выражением.

Вы должны использовать replace(), которые используют поиск для обычного текста и, кстати, до сих пор заменяет все вхождения, вместо этого:

text = text.replace(subtext, ""); 

Относительно того, почему он не работает с replaceAll(), кто знает. Чтобы диагностировать, вы могли видеть, действительно ли это в вашем тексте:

System.out.println(text.contains(subtext)); 
+0

Не влияет ли multiline только на поведение '^' и '$'? – Joni

+0

@joni да. В то время казалось правдоподобным, но я убрал это и добавил что-то полезное вместо этого – Bohemian

Смежные вопросы