Как разбить строку, используя любые пробельные символы в качестве разделителей
Какой шаблон регулярного выражения нужно передать в метод java.lang.String.split()
, чтобы разбить строку на массив подстрок, используя все пробельные символы (такие как ' '
, '\t'
, '\n'
и т.д.) в качестве разделителей?
5 ответ(ов)
Вы можете использовать следующий код для разделения строки на подстроки с учетом всех пробелов как разделителей:
myString.split("\\s+");
Этот метод объединяет все пробелы в качестве разделителей.
Если у вас есть строка:
"Hello[пробел][символ табуляции]World"
Этот код вернет подстроки "Hello"
и "World"
, пропуская пустое пространство между [пробел]
и [символ табуляции]
.
Как указал VonC, обратный слэш нужно экранировать, так как Java сначала попытается интерпретировать строку как специальный символ и отправит это на разбор. Вам нужно передать литерал "\s"
, поэтому вы должны использовать "\\s"
. Это может немного запутать.
Символ \\s
эквивалентен [ \\t\\n\\x0B\\f\\r]
, что включает пробелы, символы табуляции, переводы строки и другие пробельные символы.
В большинстве диалектов регулярных выражений существует набор удобных сокращений для различных символов, которые стоит запомнить:
\w
— соответствует любому символьному символу (буквы, цифры и символ подчеркивания).\W
— соответствует любому несимвольному символу.\s
— соответствует любому символу пробела (включая пробелы, табуляции и новые строки).\S
— соответствует любому символу, кроме символов пробела.\d
— соответствует любой цифре.\D
— соответствует любому символу, кроме цифр.
Если вы проведете поиск по фразе "Regex Cheatsheets", вы найдете множество полезных сводок и ресурсов по этой теме.
Чтобы это заработало в Javascript, мне пришлось сделать следующее:
myString.split(/\s+/g)
Вы можете использовать регулярное выражение \\s+
для решения этой задачи. Оно находит один или несколько пробельных символов (таких как пробелы, табуляции или переносы строк). Если у вас есть конкретный контекст, в котором вы хотите использовать это выражение, пожалуйста, уточните, и я смогу предоставить более конкретный пример.
Вы можете использовать регулярное выражение, чтобы учесть как обычные пробелы, так и пробелы в формате Unicode (неразрывные пробелы, код \u00A0
). В вашем случае, для разделения строки s
на элементы с учетом неразрывного пробела, вы можете использовать следующий код:
String[] elements = s.split("[\\s\\u00A0]+"); // включает неразрывный пробел
Здесь \\s
охватывает все пробельные символы, а \\u00A0
добавляет поддержку неразрывного пробела. Теперь ваша строка будет корректно разбита на элементы, игнорируя любые последовательности пробелов и неразрывных пробелов.
Как разделить строку в Java?
Как преобразовать строку, разделённую запятыми, в список?
Разделить строку по пробелам в Python
Как сгенерировать случайную алфавитно-цифровую строку
Разделить строку по запятым, игнорируя запятые внутри двойных кавычек?