我知道我可以使用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]] ;; (开始/长度对)
都很好。
答案 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);