在javascript中替换'\'n

Moi*_*oin 15 javascript replace

我正在尝试使用以下命令替换JavaScript:

r = "I\nam\nhere";
s = r.replace("\n"," ");
Run Code Online (Sandbox Code Playgroud)

但不是给我

我在这里

作为值s,它返回相同的值.

问题出在哪里?

Pab*_*mer 22

正如其他人所说,你的正则表达式缺少贪婪的旗帜.正确的表达应该是其他人给你的东西.

var r = "I\nam\nhere";
var s = r.replace(/\n/g,' ');
Run Code Online (Sandbox Code Playgroud)

我想指出与开始时的情况有何不同.您使用以下语句

var r = "I\nam\nhere";
var s = r.replace("\n"," ");
Run Code Online (Sandbox Code Playgroud)

语句确实是正确的,将替换字符\n的一个实例.它使用不同的算法.在给出要替换的String时,它将查找第一次出现并简单地将其替换为作为第二个参数给出的字符串.当使用正则表达式时,我们不只是寻找匹配的字符,我们可以编写复杂的匹配语法,如果找到匹配或几个,那么它将被替换.有关JavaScript正则表达式的更多信息,请访问w3schools.

例如,您可以使您更方便地解析来自几种不同类型文件的输入.由于操作系统的不同,使用\n或\ r \n的文件很常见,其中需要新行.为了能够处理您的代码,可以使用正则表达式的某些功能重写.

var r = "I\ram\nhere";
var s = r.replace(/[\n\r]/g,' ');
Run Code Online (Sandbox Code Playgroud)


Dav*_*mas 13

问题是您需要使用该g标志来替换所有匹配项,因为默认情况下,它replace()仅对它找到的第一个匹配项执行操作:

var r = "I\nam\nhere",
    s = r.replace(/\n/g,' ');
Run Code Online (Sandbox Code Playgroud)

g但是,要使用该标志,您必须使用正则表达式方法.

顺便说一句,在声明变量时请使用var,否则您创建的变量都是全局变量,这可能会导致以后出现问题.


Gri*_*han 6

使用 s = r.replace(/\\n/g," ");

获取参考

javascript替换代码中的“ g”代表“贪婪”,这意味着替换应尽可能进行多次

  • g实际上代表“全球” (7认同)
  • \n 仍然是字符串中的值! (2认同)

Iva*_*nik 5

它对我有用:

var s = r.split('\\n').join(' ');
Run Code Online (Sandbox Code Playgroud)