我有一个字符串字面量,在变量中包含\n
。我想用空字符串替换它。但是它不起作用。
var value = "\\\n"
value = value.replace(/(?:\\[rn])+/g, "")
console.log(value)
value的值为字符串文字-\n
。我不希望console.log
输出任何内容,但它却打印了。
\
在一个反斜杠后面留空行(由于某种原因,堆栈溢出已经削减了上面输出中的空行)。
注意,这个问题与替换换行符\n
无关。
我有一个字符串字面量,在变量中包含\n
。我想用空字符串替换它。但是它不起作用。
var value = "\\\n"
value = value.replace(/(?:\\[rn])+/g, "")
console.log(value)
value的值为字符串文字-\n
。我不希望console.log
输出任何内容,但它却打印了。
\
在一个反斜杠后面留空行(由于某种原因,堆栈溢出已经削减了上面输出中的空行)。
注意,这个问题与替换换行符\n
无关。
不要像\\[rn]
那样做。即,不要分离反斜杠和r
、n
。这会改变它的含义。
value.replace(/[\r\n]+/g, "")
\\
。value.replace(/\\[\r\n]+/g, "")
[\r\n]
-- 方括号内是字符类。在字符类中,我在某个地方读到,反斜杠就像普通字符一样。那么反斜杠在方括号内是否保留其特殊属性呢? - user2879704\
不是其中之一。 - Felix Kling\t
、\r
、\n
这样的反斜杠字符视为单独的字符,因为单独的反斜杠没有任何特殊含义。 - Avinash Raj我有一个字符串文字,在变量中出现了
\n
不是的。你有\(newline)
,这是一种完全不同的东西。
var value = "\\\n"
value
是一个长度为两个字符的字符串。第一个字符是反斜杠。第二个字符是换行符。
value = value.replace(/(?:\\[rn])+/g, "")
r
或字母n
。但是你的输入在第二个位置包含一个换行符。换行符既不匹配r
也不匹配n
。因此没有任何内容被替换,value
保留了它原本的值。> for (i = 0; i < value.length; i++) console.log(value.charCodeAt(i));
< 92
< 10 // this is a newline
console.log('\n')
如预期地打印出空行。然而,console.log('a\n')
只打印出 a
,没有明显的换行符。换句话说,Chrome开发者工具(以及Firefox)似乎在某些情况下抑制了最后的换行符。你应该使用:
value = value.replace(/\\[\r\n]+/g, "");
// ""
\r
或\n
。这个很好用 .replace(/\\r\\n?|\\n/g, '\n');
"\\\n"
会产生一个反斜杠后跟一个换行符。如果你的字符串中确实包含了\n
,那么应该写成"\\n"
。在这个时候,我不确定你所拥有的字符串真正的值是什么。 - Felix Kling