在换行符上拆分模板字符串,忽略文字 \n
Split template string on line breaks ignoring literal \n
我有一些多行文本数据,存储在 ES6 模板字符串中。任何行都可以包含文字 \n
字符串。
示例:
`line1
same\nline2
line3`
我想将该字符串拆分为一个行数组,其中每一行都来自模板字符串的一行,而不是在一行中的文字 \n
处拆分。所以我预期/想要的结果是一个 JavaScript 数组,如下所示:["line1", "same\nline2", "line3"]
.
查看下面的示例时,如果使用正则表达式进行换行符 (/\n/
) 进行简单拆分,显然不会发生这种情况。
那么,这可能吗?我是否遗漏/误解了模板字符串的工作原理?
const lines = `line1
same\nline2
line3`.split(/\n/);
document.getElementById('out').textContent = JSON.stringify(lines)
<pre id="out"></pre>
\n
被视为换行,正则表达式将始终匹配它。在你的字符串中,你可以转义 \n
比如:
`line1
same\nline2
line3`
按 \n
拆分现在将得到:
["line1", "same\nline2", "line3"]
请注意,现在 \n
只是一个字符串,而不是新行 - 但您可以映射此数组并将其替换为 real 新行。
["line1", "same\nline2", "line3"].map(value => value.replace(/\n/g, "\n"))
您可以在模板文字上使用 String.raw
标签:
const lines = (String.raw `line1
same\nline2
line3`).split(/\n/);
console.log(lines);
我有一些多行文本数据,存储在 ES6 模板字符串中。任何行都可以包含文字 \n
字符串。
示例:
`line1
same\nline2
line3`
我想将该字符串拆分为一个行数组,其中每一行都来自模板字符串的一行,而不是在一行中的文字 \n
处拆分。所以我预期/想要的结果是一个 JavaScript 数组,如下所示:["line1", "same\nline2", "line3"]
.
查看下面的示例时,如果使用正则表达式进行换行符 (/\n/
) 进行简单拆分,显然不会发生这种情况。
那么,这可能吗?我是否遗漏/误解了模板字符串的工作原理?
const lines = `line1
same\nline2
line3`.split(/\n/);
document.getElementById('out').textContent = JSON.stringify(lines)
<pre id="out"></pre>
\n
被视为换行,正则表达式将始终匹配它。在你的字符串中,你可以转义 \n
比如:
`line1
same\nline2
line3`
按 \n
拆分现在将得到:
["line1", "same\nline2", "line3"]
请注意,现在 \n
只是一个字符串,而不是新行 - 但您可以映射此数组并将其替换为 real 新行。
["line1", "same\nline2", "line3"].map(value => value.replace(/\n/g, "\n"))
您可以在模板文字上使用 String.raw
标签:
const lines = (String.raw `line1
same\nline2
line3`).split(/\n/);
console.log(lines);