我有多行文本数据,存储在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>
答案 0 :(得分:3)
您可以在模板文字中使用String.raw
标记:
const lines = (String.raw `line1
same\nline2
line3`).split(/\n/);
console.log(lines);
答案 1 :(得分:2)
\n
被视为新行,正则表达式将始终与之匹配。在您的字符串中,您可以转义\n
,如:
`line1
same\\nline2
line3`
按\n
分割现在会给出:
["line1", "same\nline2", "line3"]
请注意,现在\n
只是一个字符串,而不是新行 - 但您可以映射此数组并将其替换为真实新行。
["line1", "same\nline2", "line3"].map(value => value.replace(/\\n/g, "\n"))