Как разделить строку пробелом только в середине строки, используя JS - PullRequest
0 голосов
/ 30 августа 2018

Обычный сплит работает так:

var a = " a @b c "
console.log(a.split(" "))
["", "a", "b", "c", ""]

Но мой ожидаемый результат: [" a", "@b", "c "] это возможно? И как?

Ответы [ 3 ]

0 голосов
/ 30 августа 2018

Вы можете обрезать строку перед разделением, например:

var a = " a b c ";
a = a.trim();
console.log(a.split(" "));

обновление

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

["a", "b", "c"], а не ["a", "b", "c"]

0 голосов
/ 30 августа 2018

Как насчет

a.split(/(?!^) (?!$)/)

Если может быть больше одного пробела и поддерживаются виды сзади,

a.split(/(?<!^ *) +(?! *$)/)

0 голосов
/ 30 августа 2018

Один из вариантов - использовать регулярное выражение и требовать границы слов до и после пробела:

var a = " a b c "
console.log(a.split(/\b \b/));

Если разрешены и несловные символы, вы можете использовать match вместо этого - либо совпадать с пробелами в начале строки, затем с пробелами, либо совпадать с пробелами, за которыми следуют пробелы и конец строка или совпадение без пробелов без ограничения:

const a = " foo @bar c "
console.log(
  a.match(/^ *\S+|\S+ *$|\S+/g)
);

Lookbehind - это еще один вариант, но он еще недостаточно поддерживается для обеспечения надежности в рабочем коде.

...