如何在 JavaScript 中执行 str_place,替换 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

如果您要使用 regex,那么 比较内置的替换方法。

234275 次浏览
var new_text = text.replace("want", "dont want");

你应该这样写:

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

在 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

你可以使用 replace方法:

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

显然,第一个参数就是你要找的,它也可以接受正则表达式。

请记住,它确实会改变原来的字符串。它只返回新的值。

你查过“替换”了吗?

您的代码将如下所示

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

更简单地说:

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

用“ _”替换所有空格!

该函数替换 只有一个发生. . 如果你需要替换 你应该尝试这个函数: Http://phpjs.org/functions/str_replace:527

不一定。 看看汉斯 · 凯斯汀的回答:

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

其他人给你的代码只替换一个匹配项,而使用正则表达式替换所有匹配项(就像@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);

变量“ 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
祝你好运!

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

var city_name = 'Some text with spaces';

用 _ 替换 第一格

city_name.replace(' ', '_'); // Returns: "Some_text with spaces" (replaced only 1st match)

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

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

用 _ 没有正则表达式替换 所有空格. 函数方式。

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

已经有多个答案使用 Str.replace () (这是足够公平的这个问题)和 regex,但你可以使用 Str.spli ()加入()的组合在一起,这是比 str.replace()regex更快。

下面是一个实例:

var text = "this is some sample text that i want to replace";


console.log(text.split("want").join("dont want"));

你有以下选择:

  1. 替换第一个匹配项

var text = "this is some sample text that i want to replace and this i WANT to replace as well.";
var new_text = text.replace('want', 'dont want');
// new_text is "this is some sample text that i dont want to replace and this i WANT to replace as well"
console.log(new_text)

  1. 替换所有事件-区分大小写

var text = "this is some sample text that i want to replace and this i WANT to replace as well.";
var new_text = text.replace(/want/g, 'dont want');
// new_text is "this is some sample text that i dont want to replace and this i WANT to replace as well
console.log(new_text)

  1. 替换所有事件-不区分大小写

var text = "this is some sample text that i want to replace and this i WANT to replace as well.";
var new_text = text.replace(/want/gi, 'dont want');
// new_text is "this is some sample text that i dont want to replace and this i dont want to replace as well
console.log(new_text)

更多资料-> 给你

增加了一个方法 replace_in_javascript将满足您的要求。还发现您正在 document.write()中编写一个字符串 "new_text",该字符串应该引用一个变量 new_text

let replace_in_javascript= (replaceble, replaceTo, text) => {
return text.replace(replaceble, replaceTo)
}


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);

如果你真的想要一个相当于 PHP 的 str_replace,你可以使用 Locutus。PHP 版本的 str_replace比 JavaScriptString.prototype.replace支持更多的选项。 例如标签:

//PHP
$bodytag = str_replace("%body%", "black", "<body text='%body%'>");
//JS with Locutus
var $bodytag = str_replace(['{body}', 'black', '<body text='{body}'>')

或者数组的

//PHP
$vowels = array("a", "e", "i", "o", "u", "A", "E", "I", "O", "U");
$onlyconsonants = str_replace($vowels, "", "Hello World of PHP");
//JS with Locutus
var $vowels = ["a", "e", "i", "o", "u", "A", "E", "I", "O", "U"];
var $onlyconsonants = str_replace($vowels, "", "Hello World of PHP");

此外,它不使用正则表达式,而是使用循环。如果您不想使用正则表达式,但想要简单的字符串替换,您可以使用类似的东西(基于 Locutus)

function str_replace (search, replace, subject) {


var i = 0
var j = 0
var temp = ''
var repl = ''
var sl = 0
var fl = 0
var f = [].concat(search)
var r = [].concat(replace)
var s = subject
s = [].concat(s)


for (i = 0, sl = s.length; i < sl; i++) {
if (s[i] === '') {
continue
}
for (j = 0, fl = f.length; j < fl; j++) {
temp = s[i] + ''
repl = r[0]
s[i] = (temp).split(f[j]).join(repl)
if (typeof countObj !== 'undefined') {
countObj.value += ((temp.split(f[j])).length - 1)
}
}
}
return s[0]
}
var text = "this is some sample text that i want to replace";


var new_text = str_replace ("want", "dont want", text)
document.write(new_text)

有关更多信息,请参见源代码 https://github.com/kvz/locutus/blob/master/src/php/strings/str_replace.js

在 Javascript 中,可以使用 更换函数将给定字符串中的子字符串替换为新的子字符串。 用途:

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

您甚至可以在此函数中使用正则表达式。例如,如果想用 .替换所有出现的 ,

var text = "123,123,123";
var new_text = text.replace(/,/g, ".");
console.log(new_text);

这里的 g修饰符用于全局匹配所有可用的匹配。

JavaScript 具有用于替换子字符串的 String 对象的 replace()方法。此方法可以有两个参数。第一个参数可以是字符串或正则表达式模式(regExp 对象) ,第二个参数可以是字符串或函数。下面显示了同时具有两个字符串参数的 replace()方法示例。

var text = 'one, two, three, one, five, one';
var new_text = text.replace('one', 'ten');
console.log(new_text)  //ten, two, three, one, five, one

注意,如果第一个参数是字符串,则只替换子字符串的第一个匹配项,如上例所示。要替换子字符串的所有匹配项,您需要提供一个带有 g(全局)标志的正则表达式。如果不提供全局标志,即使提供正则表达式作为第一个参数,也只会替换子字符串的第一个匹配项。因此,让我们替换上面示例中出现的所有 one

var text = 'one, two, three, one, five, one';
var new_text = text.replace(/one/g, 'ten');
console.log(new_text)  //ten, two, three, ten, five, ten

注意,不要用引号包装正则表达式模式,这样会使它成为字符串而不是 regExp 对象。要执行不区分大小写的替换,需要提供额外的标志 i,这使模式不区分大小写。在这种情况下,上面的正则表达式将是 /one/gi。注意这里添加的 i标志。

如果第二个参数有一个函数,并且有一个匹配,那么该函数将传递三个参数。函数获得的参数是匹配项、匹配项的位置和原始文本。您需要返回应该替换的匹配项。比如说,

var text = 'one, two, three, one, five, one';
var new_text = text.replace(/one/g, function(match, pos, text){
return 'ten';
});
console.log(new_text) //ten, two, three, ten, five, ten

可以使用函数作为第二个参数对替换文本进行更多的控制。

使用 React 将方法转化为 replace substring in a sentence:

 const replace_in_javascript = (oldSubStr, newSubStr, sentence) => {
let newStr = "";
let i = 0;
sentence.split(" ").forEach(obj => {
if (obj.toUpperCase() === oldSubStr.toUpperCase()) {
newStr = i === 0 ? newSubStr : newStr + " " + newSubStr;
i = i + 1;
} else {
newStr = i === 0 ? obj : newStr + " " + obj;
i = i + 1;
}
});
return newStr;
};

这里是 RunMethod

如果你不想使用正则表达式,那么你可以使用这个函数来替换字符串中的所有内容

源代码:

function ReplaceAll(mystring, search_word, replace_with)
{
while (mystring.includes(search_word))
{
mystring = mystring.replace(search_word, replace_with);
}


return mystring;
}

使用方法:

var mystring = ReplaceAll("Test Test", "Test", "Hello");

你可以用

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

并且一次在一个字符串中更改多个值,例如将 # 更改为字符串 v,将 _ 更改为字符串 w:

text.replace(/#|_/g,function(match) {return (match=="#")? v: w;});

使用 JSString.prototype.replace第一个参数应该是正则表达式模式或字符串和第二个参数应该是字符串或函数。

str.replace(regexp|substr, newSubStr|function);

例如:

Var str = ‘这是我想替换的一些示例文本’; 替换(/want/i,“ don’t want”) ; Write (newstr) ;//这是一些示例文本,我不想替换

使用正则表达式替换字符串要比使用字符串替换慢得多。
如演示的 在 JSPerf 上所示,创建正则表达式的效率可能不同,但是所有这些效率都明显慢于简单的字符串替换。返回文章页面

固定字符串匹配没有回溯、编译步骤、范围、字符类或其他大量减慢正则表达式引擎速度的特性。当然存在优化正则表达式匹配的方法,但是我认为在通常情况下不太可能比索引到字符串更好。

对于在 JS perf 页面上运行的一个简单测试,我已经记录了一些结果:

<script>
// Setup
var startString = "xxxxxxxxxabcxxxxxxabcxx";
var endStringRegEx = undefined;
var endStringString = undefined;
var endStringRegExNewStr = undefined;
var endStringRegExNew = undefined;
var endStringStoredRegEx = undefined;
var re = new RegExp("abc", "g");
</script>


<script>
// Tests
endStringRegEx = startString.replace(/abc/g, "def") // Regex
endStringString = startString.replace("abc", "def", "g") // String
endStringRegExNewStr = startString.replace(new RegExp("abc", "g"), "def"); // New Regex String
endStringRegExNew = startString.replace(new RegExp(/abc/g), "def"); // New Regexp
endStringStoredRegEx = startString.replace(re, "def") // saved regex
</script>

Chrome 68的测试结果如下:

String replace:    9,936,093 operations/sec
Saved regex:       5,725,506 operations/sec
Regex:             5,529,504 operations/sec
New Regex String:  3,571,180 operations/sec
New Regex:         3,224,919 operations/sec

从这个答案的完整性出发(借用注释) ,值得一提的是 .replace只替换匹配字符的第一个实例。只能用 //g替换所有实例。如果替换多个实例 name.replace(' ', '_').replace(' ', '_').replace(' ', '_');或者更糟的 while (name.includes(' ')) { name = name.replace(' ', '_') },性能折衷和代码优雅可能会更糟

function str_replace($old, $new, $text)
{
return ($text+"").split($old).join($new);
}

您不需要额外的库。

在 ECMAScript 2021中,可以使用 replaceAll

const str = "string1 string1 string1"
const newStr = str.replaceAll("string1", "string2");


console.log(newStr)
//  "string2 string2 string2"

最简单的形式如下

如果您只需要替换第一次出现的

var newString = oldStr.replace('want', 'dont want');

如果你想替换所有发生的事情

var newString = oldStr.replace(want/g, 'dont want');

ES2021/ES12

Prototype.replaceAll ()

即使输入模式是一个字符串,也要尝试使用完全替换选项。

const str = "Backbencher sits at the Back";
const newStr = str.replaceAll("Back", "Front");
console.log(newStr); // "Frontbencher sits at the Front"

1-String.Prototype.place ()

只有将模式作为正则表达式提供,我们才能完全替换 * * 。
const str = "Backbencher sits at the Back";
const newStr = str.replace(/Back/g, "Front");
console.log(newStr); // "Frontbencher sits at the Front"

如果输入模式是字符串,则 replace()方法只替换第一个匹配项。

const str = "Backbencher sits at the Back";
const newStr = str.replace("Back", "Front");
console.log(newStr); // "Frontbencher sits at the Back"

你可以使用分割和连接

const str = "Backbencher sits at the Back";
const newStr = str.split("Back").join("Front");
console.log(newStr); // "Frontbencher sits at the Front"