Как удалить из java строку

У меня есть строка java с " " из текстового файла, к которому программа обращается с помощью объекта Buffered Reader. Я пробовал string.replaceAll(" ",""), и это не работает.

Есть идеи?

cleaned = cleaned.replace(" "," ");

person Greg    schedule 23.07.2010    source источник
comment
Это определенно работает, одно из ваших предположений должно быть неверным. Как вы наконец напечатаете это значение? Как вы проверяете, работает ли он?   -  person Joachim Sauer    schedule 23.07.2010
comment
Можем ли мы увидеть некоторые более важные части вашего кода?   -  person jjnguy    schedule 23.07.2010
comment
Это string = string.replaceAll(...), а не просто string.replaceAll(). Строки неизменяемы, вам нужно присвоить их обратно переменной, как при использовании replace() выше.   -  person Mark Peters    schedule 23.07.2010
comment
Почему? Это должен быть XML или HTML, т.е. язык разметки, так почему же вы удаляете авторскую разметку?   -  person user207421    schedule 24.07.2010


Ответы (9)


Это двухэтапный процесс:

strLineApp = strLineApp.replaceAll("&"+"nbsp;", " "); 
strLineApp = strLineApp.replaceAll(String.valueOf((char) 160), " ");

Это сработало для меня. Надеюсь, это поможет и вам!

person Deep Sehgal    schedule 23.01.2014

Так же, как вы упомянули:

String cleaned = s.replace(" "," ");

Меня устраивает.

person Manuel Selva    schedule 23.07.2010
comment
@Stephen: я не хотел публиковать всю цитату. Это серьезная тема - person Joachim Sauer; 23.07.2010
comment
Извините, Йоахим, я не увидел ваш комментарий, потому что пытался ответить как можно быстрее, чтобы набрать больше очков, чем мой коллега. Кстати, я не получил ваш комментарий ??? - person Manuel Selva; 23.07.2010
comment
@Мануэль: не обращай внимания, просто маленькая шутка. Прочтите ссылку в моем предыдущем комментарии, если хотите узнать больше. - person Joachim Sauer; 23.07.2010
comment
@Иоахим. Я понимаю, что я должен быть немного сумасшедшим со всеми этими многочисленными восклицательными знаками, которые я использую, не так ли??? - person Manuel Selva; 23.07.2010

Есть готовое решение для удаления HTML из общих ресурсов Apache:

StringEscapeUtils.unescapeHtml("")

Вы также можете избежать HTML, если хотите:

StringEscapeUtils.escapeHtml("")
person RichardK    schedule 18.11.2016

Строки неизменяемы, поэтому вам нужно сделать

string = string.replaceAll(" ","")
person Damian Leszczyński - Vash    schedule 23.07.2010
comment
Он уже делает это: cleaned = cleaned.replace(" "," "); - person jjnguy; 23.07.2010
comment
Верните это -1; если вы посмотрите на пример replaceAll, опубликованный в исходном посте, он явно не делает этого. - person Mark Peters; 23.07.2010

Вы можете использовать библиотеку JSoup:

String date = doc.body().getElementsByClass("Datum").html().toString().replaceAll(" ","").trim();
person michdraft    schedule 18.01.2012
comment
Вопрос заключается в использовании BufferedReader, а не JSoup. Дело в том, что вам нужно использовать String только для удаления неразрывных пробелов. Неважно, как вы получите объект String. JSoup не требуется, и его использование в этом случае было бы пустой тратой места и времени. - person John Mercier; 10.07.2014

String.replace(char, char) принимает char входных данных (или CharSequence входных данных)

String.replaceAll(String, String) принимает String входных данных и сопоставляет их с помощью регулярного выражения.

Например:

String origStr = "bat";
String newStr = str.replace('a', 'i');
// Now:
// origStr = "bat"
// newStr = "bit"

Ключевым моментом является то, что возвращаемое значение содержит новый отредактированный String. Исходная переменная String, которая вызывает replace()/replaceAll(), не имеет измененного содержимого.

Например:

String origStr = "how are you?";
String newStr = origStr.replaceAll(" "," ");
String anotherStr = origStr.replaceAll(" ","");
// origStr = "how are you?"
// newStr = "how are you?"
// anotherStr = howareyou?"
person JohnB    schedule 23.07.2010
comment
Примечание: String implements CharSequence. - person BalusC; 23.07.2010
comment
Исправлены ссылки; у них были пробелы, которые нужно было заменить на %20. Обычно это происходит, когда вы копируете из своего браузера после того, как он очистит URL-адрес, чтобы он выглядел красиво, вместо того, чтобы копировать необработанный URL-адрес. - person Mark Peters; 23.07.2010
comment
Почему никто не указывает очевидные ошибки, на которых основано большинство этих ошибочных ответов? Метод replaceAll() соответствует регулярному выражению, а метод replace() соответствует совпадению символов. Этот ответ следует удалить, он очень вводит в заблуждение. - person Martin; 15.01.2015
comment
Я думаю, что суть здесь верна. Я внес небольшую правку, чтобы уточнить, что replaceAll() соответствует регулярным выражениям. - person Ben; 20.02.2015

String в Java неизменяемы. Ты должен сделать:

String newStr = cleaned.replaceAll(" ", "");
person raf    schedule 23.07.2010
comment
Если вы заметили, в OP значение replaceAll помещается в переменную - перезаписывая исходное значение в переменной. - person aperkins; 23.07.2010

Я столкнулся с той же проблемой: внутренний HTML-код нужного мне элемента имел « », и мое утверждение не удалось. Поскольку вопрос не получил ответа, я бы предложил следующее, что сработало для меня.

String string = stringwithNbsp.replaceAll("\n", "");

P.S. Удачного тестирования :)

person Stroev    schedule 16.02.2017

person    schedule
comment
Это прекрасно работает. - person user2728409; 29.01.2021