Как удалить повторяющиеся пробелы (включая табуляции, строки, пробелы и т. Д.) В строке с использованием Java?Как удалить повторяющиеся пробелы в строке с помощью Java?
ответ
Как это:
yourString = yourString.replaceAll("\\s+", " ");
Например
System.out.println("lorem ipsum dolor \n sit.".replaceAll("\\s+", " "));
выходы
lorem ipsum dolor sit.
Что это \s+
значит?
\s+
- это регулярное выражение. \s
соответствует пробелу, вкладке, новой строке, возврату каретки, подаче формы или вертикальной вкладке, а +
говорит «один или несколько из них». Таким образом, приведенный выше код скроет все «пробельные подстроки» длиннее одного символа с одним символом пробела.
Попробуйте это - Вы должны import java.util.regex.*;
Pattern pattern = Pattern.compile("\\s+");
Matcher matcher = pattern.matcher(string);
boolean check = matcher.find();
String str = matcher.replaceAll(" ");
Где string
является вашу строку, на которую вам нужно удалить дубликаты пробелы
Вы можете использовать регулярное выражение
(\s)\1
и
заменить его $1
.
код Java:
str = str.replaceAll("(\\s)\\1","$1");
Если вход "foo\t\tbar "
вы получите "foo\tbar "
в качестве выходного
Но если вход "foo\t bar"
останется неизменным, потому что он не имеет каких-либо последовательных пробельных символов.
Если рассматривать все пробельные символы (пробел, вертикальная табуляция, горизонтальная табуляция, возврат каретки, форма подачи, новая линия), как пространство, то вы можете использовать следующее регулярное выражение для замены любое количество последовательных белого пространства с единое пространство:
str = str.replaceAll("\\s+"," ");
Но если вы хотите, чтобы заменить два последовательных белого пространства с одним пробелом вы должны сделать:
str = str.replaceAll("\\s{2}"," ");
Это может быть возможно в три этапа:
- Преобразовать строку, чтобы массив символов (ToCharArray)
- Применить цикл на массиве charater
- Затем примените строку функции замены (Replace ("ужалить вы хотите заменить", "исходную строку"));
Это нехорошее решение, при отбрасывании массива char ничего не решает. Вы на самом деле не объясняете, как сделать замену, которая является ядром проблемы. Кроме того, пожалуйста ** ** не ** отправлять полностью несвязанные ссылки. Если вы это сделаете, вас пометят как спамера. – Mat
Если вы хотите, чтобы избавиться от всех передней и задней постороннему пробельных то вы хотите сделать что-то вроде этого:
// \\A = Start of input boundary
// \\z = End of input boundary
string = string.replaceAll("\\A\\s+(.*?)\\s+\\z", "$1");
Затем вы можете удалить дубликаты, используя другие стратегии, перечисленные здесь:
string = string.replaceAll("\\s+"," ");
привет быстрый (но не симпатичный способ) я нашел это
while (cleantext.indexOf(" ") != -1)
cleantext = StringUtils.replace(cleantext, " ", " ");
Это работает довольно быстро на андроиде в обратном направлении к регулярному выражению
Работает только для пробелов, но не для других пробелов, таких как вкладки и символы новой строки. – Pang
Я знаю, вы должны добавить больше этих циклов для других объектов. Но этот код работает намного быстрее на android в качестве этого регулярного выражения, мне пришлось обрабатывать полные электронные книги. – wutzebaer
Необычно быстрее на рабочем столе. Не тестировали его на большую строку, но если вы планируете запустить ее на большом количестве небольших строк, это ответ, который вы ищете. – Ivelate
Хотя уже слишком поздно, я нашел лучшее решение (которое работает для меня), которое заменит все последующие белые пробелы одного типа с одним пробелом его тип. То есть:
Hello!\n\n\nMy World
будет
Hello!\nMy World
Уведомление Есть еще начальные и конечные пробелы. Так что мое полное решение:
str = str.trim().replaceAll("(\\s)+", "$1"));
Здесь trim()
заменяет все начальные и конечные пробельные строки с «». (\\s)
предназначен для захвата \\s
(то есть белых пространств, таких как '', '\ n', '\ t') в группе # 1. Знак +
предназначен для сопоставления 1 или более предшествующих токенов. Таким образом, (\\s)+
могут быть последовательными символами (1 или более) среди любых одиночных символов пробела ('', '\ n' или '\ t'). $1
предназначен для замены соответствующих строк на строку group # 1 (которая содержит только 1 символ пробела) соответствующего типа (то есть совпадающего символа одиночного пробела). Выше решение будет меняться следующим образом:
Hello!\n\n\nMy World
будет
Hello!\nMy World
Я не нашел мое выше решение здесь, поэтому я разместил его.
Вы также можете попробовать использовать Sten Tokeniser для любого пространства, табуляции, новой строки и т. Д. Простой способ,
String s = "Your Text Here";
StringTokenizer st = new StringTokenizer(s, " ");
while(st.hasMoreTokens())
{
System.out.print(st.nextToken());
}
String str = " Text with multiple spaces ";
str = org.apache.commons.lang3.StringUtils.normalizeSpace(str);
// str = "Text with multiple spaces"
- 1. Как удалить повторяющиеся пробелы в строке?
- 2. Удалить повторяющиеся пробелы вручную в строке
- 3. Java - удалить повторяющиеся повторяющиеся теги в строке java
- 4. Удалить пробелы в строке с помощью Scala
- 5. удалить пробелы в строке с помощью javascript
- 6. Как очистить повторяющиеся пробелы в строке
- 7. Удалить пробелы в строке
- 8. Как удалить повторяющиеся слова с помощью java
- 9. Как удалить пробелы в строке с помощью цикла в python?
- 10. Как удалить повторяющиеся символы в строке с помощью R?
- 11. Как удалить пробелы в строке с помощью preg_replace
- 12. Как удалить лишние пробелы в строке?
- 13. Как удалить повторяющиеся символы в строке
- 14. Как удалить повторяющиеся символы в строке?
- 15. Как удалить повторяющиеся пробелы из строки
- 16. Удалить повторяющиеся пары в строке
- 17. Удалить повторяющиеся символы в строке
- 18. Удалить пробелы в строке XML
- 19. Как удалить повторяющиеся символы в строке в java
- 20. Как удалить пробелы в строке в javascript
- 21. Удалить лишние пробелы в строке, созданной с @
- 22. Как удалить лишние пробелы в строке
- 23. Как удалить повторяющиеся символы в строке?
- 24. Как удалить повторяющиеся буквы в строке
- 25. JavaScript - как удалить определенные пробелы в строке
- 26. Как удалить пробелы в настраиваемой строке заголовка
- 27. Как удалить пробелы между скобками в строке
- 28. Удалить пробелы и пробелы с помощью jquery
- 29. удалить ненужные пробелы в строке в oracle
- 30. Невозможно удалить пробелы в строке в г
почему нет методы replaceAll ?? Поддерживает ли последний JDK этот метод? –
@SuhrobSamiev - String.replaceAll() был на Java с JDK 1.4. http://docs.oracle.com/javase/1.4.2/docs/api/java/lang/String.html#replaceAll(java.lang.String, java.lang.String) –
Хотел бы я добавить больше, чем +1 для удивительного объяснения \ s +. – Cyntech