0

我正在使用一种方法来迭代地执行字符串中的替换。

function replaceAll(srcString, target, newContent){
  while (srcString.indexOf(target) != -1)
  srcString = srcString.replace(target,newContent);
  return srcString;
}

但它不适用于我想要的目标文本,主要是因为我想不出如何正确编写该文本:我要删除的字面意思是"\n", (包括逗号和引号),那又如何作为第二个参数传递以使其正常工作?

提前致谢。

4

4 回答 4

7

如果您对第一个参数使用双引号,则需要转义引号replace

'some text "\n", more text'.replace("\"\n\",", 'new content');

或者你可以做

'some text "\n", more text'.replace('"\n",', 'new content');

请注意,在第二个示例中,要替换的第一个参数使用单引号来表示字符串,因此您不需要转义双引号。

最后,另一种选择是在replace调用中使用正则表达式

'some text "\n", more text "\n",'.replace(/"\n",/g, 'new content');

最后的“g”使替换成为全部替换(全局)。

于 2012-08-07T13:06:13.523 回答
4

要删除"\n",只需使用String.replace

srcString.replace(/"\n"[,]/g, "")

您可以使用正则表达式替换/"\n"[,]/g

于 2012-08-07T13:06:15.863 回答
2

不需要这样的功能。replace 函数有一个额外的参数g,它替换所有出现而不是第一个:

'sometext\nanothertext'.replace(/\n/g,'');
于 2012-08-07T13:07:06.720 回答
0

无论字符串中的引号是否被转义:

 var str = 'This string has a "\n", quoted newline.';

或者

var str = "This string has a \"\n\", escaped quoted newline.";

解决方案是相同的(将 '!!!' 更改为您要替换"\n",的内容:

 str.replace(/"\n",/g,'!!!');

jsFiddle 演示

于 2012-08-07T13:12:50.243 回答