Как должен выглядеть мой код, чтобы удалить пробел в строке в Java?

Как должен выглядеть мой код, чтобы удалить пробел в строке в Java?

Я пробовал следующее:

/* Option 1 */ String x=splitString.replaceAll("\\s+","");
/* Option 2 */ String x=splitString.trim()

Ни один из них не дает мне ожидаемого результата.

Ответ 1

Маленькая армия людей, считающая, что \s соответствует всем пробелам, просто неверна! Посмотрев в документах, мы видим, что он соответствует [ \t\n\x0B\f\r] - кучу ломающихся пробелов (или, другими словами, просто обычный обычный пробел.)

Аналогично, trim() также не соответствует всем пробелам (это хуже, он соответствует всем символам, которые имеют значение <= space, большинство из которых не являются технически простыми), поэтому давайте пример с пробелами перед и после строки, затем называя trim() на ней, не является исчерпывающим тестом на любой фрагмент воображения.

Учитывая вышеизложенное, код (основанный на regex), который вы предоставили, определенно удалит все прерывистые пробелы из строки, так что это звучит для меня, как будто у вас есть потенциально неразрывный пробельный символ в там. Это особенно вероятно, если вы вытащили любой текст из какого-то внешнего источника, а не просто записывали строку в код (например, часть HTML-страницы может быть наиболее вероятным кандидатом.)

Если это так, попробуйте:

String x=splitString.replaceAll("\\p{Z}","");

... где \p{Z} - это ярлык для сопоставления любого типа пробелов, а не просто не разбивающих пробелов. \p{Separator} является его более длинной (эквивалентной) формой.

Ответ 2

Попробуйте этот код, который поможет вам!

String st = " Hello I am White Space   ";
System.out.println(st);  // Print Original String
   //st = st.replaceAll("\\s+",""); // Remove all white space and assign to same
   st = st.trim(); // It is working fine.
System.out.println(st);  // Print after removing all white space.