【问题标题】:How to get the delimiters that split my string in Javascript?如何获取在 Javascript 中拆分我的字符串的分隔符?
【发布时间】:2020-04-19 07:05:28
【问题描述】:

假设我有如下字符串:

var str = "hello=world&universe";

我的正则表达式替换语句是这样的:

str.replace(/([&=])/g, ' ');

如何从上述正则表达式替换语句中获取分割我的字符串的分隔符?

我希望结果是这样的:

var strings    = ['hello', 'world', 'universe'];
var delimiters = ['=', '&'];

【问题讨论】:

    标签: javascript regex delimiter


    【解决方案1】:

    你可以分成一组,然后将部分分开。

    var str = "hello=world&universe",
        [words, delimiters] = str
            .split(/([&=])/)
            .reduce((r, s, i) => {
                r[i % 2].push(s);
                return r;    
            }, [[], []]);
    
    console.log(words);
    console.log(delimiters);

    【讨论】:

      【解决方案2】:

      这是使用String.matchAll的一种方式

      const str = "hello=world&universe";
      const re = /([&=])/g;
      const matches = [];
      let pos = 0;
      const delimiters = [...str.matchAll(re)].map(m => {
        const [match, capture] = m;
        matches.push(str.substring(pos, m.index));
        pos = m.index + match.length;
        return match;  
      });
      matches.push(str.substring(pos));
      
      console.log('matches:', matches.join(', '));
      console.log('delimiters:', delimiters.join(', '));

      但仅供参考。您发布的字符串看起来像一个 URL 搜索字符串。您可能希望使用URLSearchParams 来解析它,因为如果您尝试同时在“&”和“=”上进行拆分,则会出现边缘情况。见How can I get query string values in JavaScript?

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-11-15
        • 2010-10-13
        • 1970-01-01
        • 1970-01-01
        • 2010-10-29
        • 2017-04-02
        • 2012-06-24
        相关资源
        最近更新 更多