2011-04-01 66 views
115

我想用str_replace或者其他类似的替代方法替换JavaScript中的一些文本。如何在JavaScript中执行str_replace,替换JavaScript中的文本?

var text = "this is some sample text that i want to replace"; 
var new_text = replace_in_javascript("want", "dont want", text); 
document.write("new_text"); 

应该给

this is some sample text that i dont want to replace 
+0

奇怪没人注意到,PHP的'str_replace'也接受相同的长度,其中,所述第一阵列中的每个串置换为相同的索引在所述第二阵列中的字符串的两个阵列。请参阅http://stackoverflow.com/a/5069776/296430,了解迄今为止我发现的唯一正确功能,该功能模仿JavaScript中的确切行为。 – 2013-09-02 00:08:42

+0

@JulesColle经常失败的答案 - 看看为什么/当它失败和更好的解决方案在这里:http://stackoverflow.com/a/37949642/445295 – 2016-06-21 16:24:32

回答

181

您将使用replace方法:

text = text.replace('old', 'new'); 

第一个参数是你在找什么,很明显。它也可以接受正则表达式。

只记得它不是更改原始字符串。它只返回新的值。

+3

非常感谢'它只返回,并没有改变'!那是我长时间扯掉我的头发,直到我看到您的评论... – 2011-11-26 04:25:59

+60

string.replace('old','new')将只替换字符串中'old'的第一个实例。像realmag777的答案中使用'g'标志的正则表达式将替换字符串的所有实例。 text = text.replace(/ old/g,'new')会替换'old'的所有实例 – Jazzerus 2012-05-31 14:44:02

+0

不区分大小写? – 2012-06-04 11:17:06

4
var new_text = text.replace("want", "dont want"); 
11

你应该写这样的事情:

var text = "this is some sample text that i want to replace"; 
var new_text = text.replace("want", "dont want"); 
document.write(new_text); 
4

在JavaScript中,你可以调用String对象,例如在replace方法"this is some sample text that i want to replace".replace("want", "dont want"),它将返回替换的字符串。

var text = "this is some sample text that i want to replace"; 
var new_text = text.replace("want", "dont want"); // new_text now stores the replaced string, leaving the original untouched 
4

hm ..你检查过replace()吗?

您的代码看起来像这样

var text = "this is some sample text that i want to replace"; 
var new_text = text.replace("want", "dont want"); 
document.write(new_text); 
68

更简单地说:

city_name=city_name.replace(/ /gi,'_'); 

替换所有空间用 '_'!

+7

这是“str_replace”(全局)更准确的翻译。选择的答案只会取代第一个实例。 – rICh 2012-05-15 21:53:45

+0

不要忘记转义字符,特别是如果你要替换hex转义:\ x27例如是'.replace(/ \\ x3B/g,';')' – dmayo 2016-10-14 18:44:40

10

该函数替换只有一个发生..如果您需要更换 多次出现,你应该试试这个功能: http://phpjs.org/functions/str_replace:527

不一定。 看到汉斯合成聚合物膜答案:

city_name = city_name.replace(/ /gi,'_'); 
8

别人是给你只能更换一个发生,同时使用正则表达式的代码替换所有这些(如@sorgit说)。要以“不希望”,我们该代码替换所有的“希望”:

var text = "this is some sample text that i want to replace"; 
var new_text = text.replace(/want/g, "dont want"); 
document.write(new_text); 

变量“新文本”将导致被“这是我不希望替换一些示例文本”。

为了得到一个快速指导,正则表达式,去这里:
http://www.cheatography.com/davechild/cheat-sheets/regular-expressions/
要了解更多有关str.replace(),去这里:
https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/String/replace
祝你好运!

8

所有这些方法都不会修改原始值,并返回新的字符串。

var city_name = 'Some text with spaces'; 

替换1空间与_

city_name.replace(' ', '_'); // Returns: Some_text with spaces 

替换所有空格与_使用正则表达式。如果你需要使用正则表达式,那么我建议用https://regex101.com/

city_name.replace(/ /gi,'_'); // Returns: Some_text_with_spaces 

测试它取代所有空格与_ 没有正则表达式。功能方式。

city_name.split(' ').join('_'); // Returns: Some_text_with_spaces