Я не получил оптимизированное регулярное выражение, которое разделило бы меня String, основываясь на первом появлении пробела:
var str="72 tocirah sneab";
Мне нужно получить:
[
"72",
"tocirah sneab",
]
javascript
regex
Лука
источник
источник
Ответы:
Если вы заботитесь только о символе пробела (а не символах табуляции или других пробельных символов) и заботитесь только обо всем до первого пробела и обо всем после первого пробела, вы можете сделать это без регулярного выражения, например:
Обратите внимание, что если пробела нет вообще, то первая строка вернет пустую строку, а вторая строка вернет всю строку. Будьте уверены, что именно такое поведение вы хотите в этой ситуации (или что эта ситуация не возникнет).
источник
Javascript не поддерживает внешний вид, поэтому
split
это невозможно.match
работает:Еще один трюк:
как насчет:
и почему бы нет
или, может быть
Обновление 2019 : начиная с ES2018, поддерживаются виды:
источник
str.match(/^(\S+)\s(.*)/).slice(1)
не будет работать для строки, которая не имеет местаВ ES6 вы также можете
источник
В конце игры, я знаю, но, кажется, есть очень простой способ сделать это:
Это уйдет
arr[0]
с"72"
иarr[1]
с"tocirah sneab"
. Обратите внимание, что arr [2] будет пустым, но вы можете просто проигнорировать его.Для справки:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/split#Capturing_parentheses
источник
но я все еще думаю, что есть более быстрый путь.
источник
Решение georg хорошо, но ломается, если строка не содержит пробелов. Если ваши строки могут не содержать пробелов, безопаснее использовать .split и захватывать группы следующим образом:
источник
Вы также можете использовать .replace, чтобы заменить только первое вхождение,
Оставляя / г.
DEMO
источник
Просто разбейте строку на массив и склейте нужные вам части вместе. Этот подход очень гибок, он работает во многих ситуациях, и его легко рассуждать. Плюс вам нужен только один вызов функции.
В качестве альтернативы, если вы хотите выбрать то, что вам нужно, прямо из строки, вы можете сделать что-то вроде этого:
Или вот так:
Однако я предлагаю первый пример.
Рабочая демоверсия: jsbin
источник
Всякий раз, когда мне нужно получить класс из списка классов или части имени или идентификатора класса, я всегда использую split (), а затем либо получаю его специально с индексом массива, либо, чаще всего в моем случае, pop (), чтобы получить последний элемент или shift (), чтобы получить первый.
Этот пример получает классы div "gallery_148 ui-sortable" и возвращает идентификатор галереи 148.
Я уверен, что это может быть сжато в меньше строк, но я оставил его расширенным для удобства чтения.
источник
Мне нужен был немного другой результат.
Я хотел первое слово, и то, что когда-либо было после него - даже если оно было пустым.
так что, если вход
oneword
вы получаетеoneword
и''
.Если вход
one word and some more
вы получаетеone
иword and some more
.источник
Я не уверен, почему все остальные ответы настолько сложны, когда вы можете сделать все это в одной строке, также справляясь с нехваткой места.
В качестве примера давайте возьмем первый и «другие» компоненты имени:
источник
Следующая функция всегда разбивает предложение на 2 элемента. Первый элемент будет содержать только первое слово, а второй элемент будет содержать все остальные слова (или это будет пустая строка).
источник