【发布时间】:2012-12-13 21:13:24
【问题描述】:
我正在尝试使用以下方法在 JavaScript 中进行替换:
r = "I\nam\nhere";
s = r.replace("\n"," ");
但不是给我
我在这里
作为s的值,
它返回相同。
问题出在哪里??
【问题讨论】:
标签: javascript replace
我正在尝试使用以下方法在 JavaScript 中进行替换:
r = "I\nam\nhere";
s = r.replace("\n"," ");
但不是给我
我在这里
作为s的值,
它返回相同。
问题出在哪里??
【问题讨论】:
标签: javascript replace
replaceAll() 相对较新,并非所有浏览器都支持:
r = "I\nam\nhere";
s = r.replaceAll("\n"," ");
【讨论】:
正如其他人所说,您的正则表达式缺少全局标志。正确的表达方式应该和别人给你的一样。
var r = "I\nam\nhere";
var s = r.replace(/\n/g,' ');
我想指出与一开始的不同之处。 您正在使用以下语句
var r = "I\nam\nhere";
var s = r.replace("\n"," ");
这些陈述确实是正确的,并将替换字符 \n 的一个实例。它使用不同的算法。当给出一个字符串来替换它时,它将寻找第一次出现并简单地用作为第二个参数给出的字符串替换它。当使用正则表达式时,我们不只是寻找要匹配的字符,我们可以编写复杂的匹配语法,如果找到一个或多个匹配,那么它将被替换。更多关于 JavaScript 正则表达式的信息可以在这里找到w3schools。
例如,您制作的方法可以更通用,以解析来自几种不同类型文件的输入。由于操作系统的差异,在需要换行的情况下,文件带有 \n 或 \r 是很常见的。为了能够同时处理您的代码,可以使用正则表达式的某些功能重写。
var r = "I\ram\nhere";
var s = r.replace(/[\n\r]/g,' ');
【讨论】:
from here 的解决方案非常适合我:
r.replace(/=(\r\n|\n|\r)/gm," ");
【讨论】:
只需使用\\\n 替换即可。
r.replace("\\\n"," ");
【讨论】:
它对我有用:
var s = r.split('\\n').join(' ');
【讨论】:
你可以使用:
var s = r.replace(/\n/g,' ').replace(/\r/g,' ');
因为不同的SO使用不同的方式来设置一个“新行”,例如:Mac Unix Windows,在此之后,您可以使用其他功能来规范空白。
【讨论】:
【讨论】:
.replace() 需要全局匹配标志:
s = r.replace(/\n/g, " ");
【讨论】:
问题是您需要使用g 标志来替换所有 个匹配项,因为默认情况下,replace() 只作用于它找到的第一个匹配项:
var r = "I\nam\nhere",
s = r.replace(/\n/g,' ');
不过,要使用 g 标志,您必须使用正则表达式方法。
顺便提一下,声明变量的时候请使用var,否则你创建的变量都是全局的,以后可能会出问题。
【讨论】: