寻找返回字符串位置的分割变体

时间:2019-05-22 11:23:28

标签: javascript string

我知道我可以使用str.split(/[\n]+/)将Javascript字符串分成几行。

但是,我还需要知道原始字符串中每行的位置。

就是我想要

  

myFunc(“ ABC \ nDEF \ n \ n \ nGHI”)

返回

  

[[“ ABC”,0],[“ DEF”,4],[“ GHI”,10]]

我对返回的确切格式并不挑剔,并且希望尽可能多地利用标准函数。

那么,简单的答案就会返回

  

[[0,“ ​​ABC”],[4,“ DEF”],[10,“ GHI”]]

甚至

  

[[0,3],[4,7],[10,13]] ;; (开始/结束对)

  

[[0,3],[4,3],[10,3]] ;; (开始/长度对)

都很好。

1 个答案:

答案 0 :(得分:0)

您可以匹配非换行并从匹配结果中获取索引。

var regex = /[^\n]+/gm,
    str = `ABC\nDEF\n\n\nGHI`,
    m,
    result = []

while ((m = regex.exec(str)) !== null) {
    // This is necessary to avoid infinite loops with zero-width matches
    if (m.index === regex.lastIndex) {
        regex.lastIndex++;
    }
    
    // The result can be accessed through the `m`-variable.
    m.forEach((match, groupIndex) => {
        result.push([m.index, match]);
    });
}

console.log(result);