【问题标题】:Javascript | Can't replace \n with String.replace()Javascript |不能用 String.replace() 替换 \n
【发布时间】:2016-10-02 19:40:33
【问题描述】:

我有解析网站并从数据库中获取信息的代码。 它看起来像这样:

var find = body.match(/\"text\":\"(.*?)\",\"date\"/);

结果,我有:

гороскоп на июль скорпион\nштукатурка на газобетон\nподраб​​отка на день\nмицубиси тюмень\nсокращение микрорайон

然后我尝试替换\n,但它不起作用。

var str = find[1].replace(new RegExp("\\n",'g'),"*");

我能用这个做什么?

【问题讨论】:

    标签: javascript node.js parsing replace


    【解决方案1】:

    您似乎想要替换文本 \n,即反斜杠后跟 n,而不是换行符。

    这种情况你可以试试

    var str = find[1].replace(/\\n/g, "*");
    

    或可读性较差的版本

    var str = find[1].replace(new RegExp("\\\\n", "g"), "*");
    

    在正则表达式中,字符串\n 匹配换行符。为了匹配一个反斜杠字符,我们需要通过在它前面加上另一个反斜杠来“转义”它。正则表达式中的\\ 匹配\ 字符。同样,在 JavaScript 字符串字面量中,\ 是转义字符,因此我们在编写 new RegExp("\\\\n", "g") 时需要再次转义正则表达式中的两个反斜杠。

    【讨论】:

    • 嗨。我已经尝试了这两种解决方案,似乎它们之间存在差异。第一个不起作用,但第二个可以?!有人可以解释一下为什么吗?
    【解决方案2】:

    在控制台中工作!

    这适用于全局,适用于两种类型的换行符:

    find[1].replace(/\r?\n/g, "*")
    

    如果您不想替换 '\r',您可以简单地将其从正则表达式中删除。

    【讨论】:

    • code | result p.s.抱歉俄语,这是网站数据。
    • 有趣,我刚刚在我的 chrome 控制台中尝试过,它工作正常。这是一个屏幕截图 - imgur.com/a/3W72C 你能告诉我你在 console.log find[1] 时得到的确切输出吗?
    • 我认为这有点像这个网站上的解析屏蔽。因为此代码适用于其他网站。日志 -> this
    【解决方案3】:

    删除所有 3 种类型的换行符

    let s = find[1].replace(/(\r\n|\n|\r)/gm, " - ")

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-06-23
      • 1970-01-01
      • 2015-08-05
      • 2013-01-04
      • 2011-05-20
      • 2013-08-16
      • 1970-01-01
      • 2016-01-15
      相关资源
      最近更新 更多