5

Как разбить строку, используя любые пробельные символы в качестве разделителей

13

Какой шаблон регулярного выражения нужно передать в метод java.lang.String.split(), чтобы разбить строку на массив подстрок, используя все пробельные символы (такие как ' ', '\t', '\n' и т.д.) в качестве разделителей?

5 ответ(ов)

10

Вы можете использовать следующий код для разделения строки на подстроки с учетом всех пробелов как разделителей:

myString.split("\\s+");

Этот метод объединяет все пробелы в качестве разделителей.

Если у вас есть строка:

"Hello[пробел][символ табуляции]World"

Этот код вернет подстроки "Hello" и "World", пропуская пустое пространство между [пробел] и [символ табуляции].

Как указал VonC, обратный слэш нужно экранировать, так как Java сначала попытается интерпретировать строку как специальный символ и отправит это на разбор. Вам нужно передать литерал "\s", поэтому вы должны использовать "\\s". Это может немного запутать.

Символ \\s эквивалентен [ \\t\\n\\x0B\\f\\r], что включает пробелы, символы табуляции, переводы строки и другие пробельные символы.

0

В большинстве диалектов регулярных выражений существует набор удобных сокращений для различных символов, которые стоит запомнить:

  • \w — соответствует любому символьному символу (буквы, цифры и символ подчеркивания).
  • \W — соответствует любому несимвольному символу.
  • \s — соответствует любому символу пробела (включая пробелы, табуляции и новые строки).
  • \S — соответствует любому символу, кроме символов пробела.
  • \d — соответствует любой цифре.
  • \D — соответствует любому символу, кроме цифр.

Если вы проведете поиск по фразе "Regex Cheatsheets", вы найдете множество полезных сводок и ресурсов по этой теме.

0

Чтобы это заработало в Javascript, мне пришлось сделать следующее:

myString.split(/\s+/g)
0

Вы можете использовать регулярное выражение \\s+ для решения этой задачи. Оно находит один или несколько пробельных символов (таких как пробелы, табуляции или переносы строк). Если у вас есть конкретный контекст, в котором вы хотите использовать это выражение, пожалуйста, уточните, и я смогу предоставить более конкретный пример.

0

Вы можете использовать регулярное выражение, чтобы учесть как обычные пробелы, так и пробелы в формате Unicode (неразрывные пробелы, код \u00A0). В вашем случае, для разделения строки s на элементы с учетом неразрывного пробела, вы можете использовать следующий код:

String[] elements = s.split("[\\s\\u00A0]+"); // включает неразрывный пробел

Здесь \\s охватывает все пробельные символы, а \\u00A0 добавляет поддержку неразрывного пробела. Теперь ваша строка будет корректно разбита на элементы, игнорируя любые последовательности пробелов и неразрывных пробелов.

Чтобы ответить на вопрос, пожалуйста, войдите или зарегистрируйтесь