替换换行字符串- ' '在javascript

replace newline string literal - ' ' in javascript

本文关键字:javascript 换行 字符串 替换      更新时间:2023-09-26

我有字符串文字,'n在一个变量中。我正试图用空字符串代替它。但是它不工作。

var value = "'''n"
value = value.replace(/(?:''[rn])+/g, "")
console.log(value)

value计算结果为字符串字面值- 'n。我期望console.log没有输出。但是它输出

'

空行后面有一个反斜杠(由于某种原因,堆栈溢出在上面的输出中删除了空行)。

注意,这个问题与替换换行符无关- 'n

我有一个字符串字面值,'n在变量

不,你没有。你有'(newline),这是一个完全不同的东西。

var value = "'''n"

value是长度为2的字符串。第一个字符是反斜杠。第二个字符是换行符

value = value.replace(/(?:''[rn])+/g, "")

您的regexp尝试替换后跟字母r或字母n的文字反斜杠。但是您的输入在第二个位置包含一个换行符。换行符既不匹配r也不匹配n。因此,没有任何东西被替换,value保持其原始值。

看得更清楚:

> for (i = 0; i < value.length; i++) console.log(value.charCodeAt(i));
< 92
< 10  // this is a newline

你可能对Chrome devtools控制台的一些非直观行为感到困惑。console.log(''n')按预期打印空行。然而,console.log('a'n')只打印a,没有明显的换行符。换句话说,Chrome devtools(以及FF)在某些情况下似乎会抑制最后的尾随换行符。

不要像''[rn]那样做。例如,不要将反斜杠和rn分开。这将改变它的含义。

value.replace(/['r'n]+/g, "")

如果您还想替换回车符或换行符之前存在的反斜杠字符,则在字符类之前添加''

value.replace(/''['r'n]+/g, "")

你应该使用:

value = value.replace(/''['r'n]+/g, "");
// ""

这将取代'r'n,后面跟着一个文字'

这个效果很好.replace(/''r''n?|''n/g, ''n');