.split (regex) ведет себя как при всегда глобальном сканировании

1

У меня возникла проблема с встроенной функцией .split при ее использовании в паре с повторным просмотром.

в качестве примера можно привести следующую ситуацию:

var my_string = 'href=/Something/Something_else?=Something';

теперь я использую этот фрагмент кода для разделения над строкой:

var parts = my_string.split(/=/);

При взгляде на console.log parts кажется, что команда .split создала array из 3 элементов:

  • href
  • /Something/Something_else?
  • Something

Мне нужен массив из 2 элементов:

  • href
  • /Something/Something_else?=Something

Из того, что я понимаю, если g (глобальный) флаг не накладывается на шаблон регулярного выражения, он должен разделиться только после первого найденного появления знака = (равно).

Можно ли использовать этот шаблон регулярного выражения /=/ вместо /=/g чтобы достичь этого? или это должно быть сделано каким-то другим способом?

  • 0
    Вы можете попробовать с s.match(/^([^=]*)=([^]*)/) а затем получить доступ к группе 1 и 2. g всегда включен по умолчанию с split .
  • 0
    IndexOf () затем разделить строку на 2
Теги:
split

3 ответа

2
Лучший ответ

Вы можете использовать =(.*) Как regexp и ограничить результаты, используя второй аргумент

var my_string = 'href=/Something/Something_else?=Something';
var parts = my_string.split(/=(.*)/, 2);
console.log(parts);
  • 1
    Еще лучше my_string.split(/=(.*)/, 2);
  • 0
    Спасибо @revo. Отредактировал это в!
Показать ещё 1 комментарий
0

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

const 
  my_string = 'href=/Something/Something_else?=Something',
  firstEquals = my_string.indexOf('='),
  parts = [
    my_string.substr(0, firstEquals),
    my_string.substr(firstEquals+1)
  ];

console.log(parts);
0

Используйте IndexOf(), затем разделите строку на 2:

var my_string = 'href=/Something/Something_else?=Something';

var index = my_string.indexOf('=');

var result = [my_string.substring(0, index), my_string.substring(index+1)]

console.log(result);

Ещё вопросы

Сообщество Overcoder
Наверх
Меню