如何区分变量中的转义字符\n与实际原生换行并保留二者差异?
解决方案
问题原因
JS 解析字符串字面量(含模板字符串)时,会自动将字面量中书写的转义序列\n转换为实际的换行字符(Unicode 编码U+000A),和模板字符串中手动换行生成的字符完全一致,所以直接存储的话两种换行自然无法区分。
可用解决方法
方法1:手动转义反斜杠
如果你希望保留字面的\n字符,只需要给反斜杠加一层转义,写成\\n即可,解析后会保留为「反斜杠+字母n」两个独立字符,和实际换行符完全区分开。
示例代码:
var str = `123\\n456 789`;
此时变量存储的内容里,前者\n是两个字符\+n,后者是单个实际换行符,可通过字符编码直接区分。
方法2:使用String.raw标签函数
如果不想手动修改所有转义符,可以直接用JS原生的String.raw标签包裹模板字符串,它会原样返回模板的原始内容,不会自动解析转义序列:
示例代码:
var str = String.raw`123\n456 789`;
得到的变量效果和手动转义完全一致,无需手动添加额外反斜杠。
区分验证方式
你可以通过以下方法判断字符串中存在的换行类型:
- 检测是否存在字面
\n:str.includes('\\n') - 检测是否存在实际换行符:
str.includes('\n')
内容的提问来源于stack exchange,提问作者CennoxX
相关产品推荐
相关产品推荐

