首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >一次替换多个字符串

一次替换多个字符串
EN

Stack Overflow用户
提问于 2011-02-22 02:00:06
回答 12查看 168.7K关注 0票数 75

在JavaScript中有没有一个简单的等价物呢?

代码语言:javascript
复制
$find = array("<", ">", "\n");
$replace = array("&lt;", "&gt;", "<br/>");

$textarea = str_replace($find, $replace, $textarea); 

这是使用PHP的str_replace,它允许您使用一组单词来查找和替换。我能用JavaScript / jQuery做这样的事情吗?

代码语言:javascript
复制
...
var textarea = $(this).val();

// string replace here

$("#output").html(textarea);
...
EN

回答 12

Stack Overflow用户

回答已采纳

发布于 2011-02-22 02:31:35

您可以使用自己的函数来扩展String对象,该函数可以完成所需的操作(如果缺少功能,则非常有用):

代码语言:javascript
复制
String.prototype.replaceArray = function(find, replace) {
  var replaceString = this;
  for (var i = 0; i < find.length; i++) {
    replaceString = replaceString.replace(find[i], replace[i]);
  }
  return replaceString;
};

对于全局替换,您可以使用regex:

代码语言:javascript
复制
String.prototype.replaceArray = function(find, replace) {
  var replaceString = this;
  var regex; 
  for (var i = 0; i < find.length; i++) {
    regex = new RegExp(find[i], "g");
    replaceString = replaceString.replace(regex, replace[i]);
  }
  return replaceString;
};

要使用该函数,它将类似于您的PHP示例:

代码语言:javascript
复制
var textarea = $(this).val();
var find = ["<", ">", "\n"];
var replace = ["&lt;", "&gt;", "<br/>"];
textarea = textarea.replaceArray(find, replace);
票数 88
EN

Stack Overflow用户

发布于 2011-02-22 02:06:07

代码语言:javascript
复制
text = text.replace(/</g, '&lt;').replace(/>/g, '&gt;').replace(/\n/g, '<br/>');
票数 22
EN

Stack Overflow用户

发布于 2013-04-16 00:25:24

一种更直观的方法:

代码语言:javascript
复制
String.prototype.htmlProtect = function() {
  var replace_map;

  replace_map = {
    '\n': '<br />',
    '<': '&lt;',
    '>': '&gt;'
  };

  return this.replace(/[<>\n]/g, function(match) { // be sure to add every char in the pattern
    return replace_map[match];
  });
};

这就是你所说的:

代码语言:javascript
复制
var myString = "<b>tell me a story, \n<i>bro'</i>";
var myNewString = myString.htmlProtect();

// &lt;b&gt;tell me a story, <br />&lt;i&gt;bro'&lt;/i&gt;
票数 11
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5069464

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档