Vis*_*ish 133 javascript replace str-replace
我想使用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");
Run Code Online (Sandbox Code Playgroud)
应该给
this is some sample text that i dont want to replace
Run Code Online (Sandbox Code Playgroud)
如果您要使用正则表达式,与内置替换方法相比,性能影响是什么.
sdl*_*rhc 198
你会使用这个replace
方法:
text = text.replace('old', 'new');
Run Code Online (Sandbox Code Playgroud)
显然,第一个论点是你正在寻找的东西.它也可以接受正则表达式.
请记住,它并不会改变原来的字符串.它只返回新值.
rea*_*777 83
更简单:
city_name=city_name.replace(/ /gi,'_');
Run Code Online (Sandbox Code Playgroud)
用'_'替换所有空格!
Luk*_*kas 18
所有这些方法都不会修改原始值,返回新的字符串.
var city_name = 'Some text with spaces';
Run Code Online (Sandbox Code Playgroud)
用_ 替换第一个空格
city_name.replace(' ', '_'); // Returns: Some_text with spaces
Run Code Online (Sandbox Code Playgroud)
使用正则表达式用_ 替换所有空格.如果您需要使用正则表达式,那么我建议您使用https://regex101.com/进行测试
city_name.replace(/ /gi,'_'); // Returns: Some_text_with_spaces
Run Code Online (Sandbox Code Playgroud)
用_ 而不是正则表达式替换所有空格.功能方式.
city_name.split(' ').join('_'); // Returns: Some_text_with_spaces
Run Code Online (Sandbox Code Playgroud)
Tim*_*. Z 16
你应该这样写:
var text = "this is some sample text that i want to replace";
var new_text = text.replace("want", "dont want");
document.write(new_text);
Run Code Online (Sandbox Code Playgroud)
Pav*_*vel 14
该函数只替换一次出现..如果你需要替换多次出现,你应该尝试这个函数:http://phpjs.org/functions/str_replace: 527
不必要.看到Hans Kesting的回答:
city_name = city_name.replace(/ /gi,'_');
Run Code Online (Sandbox Code Playgroud)
Zoy*_*oyt 14
其他人给你的代码只替换一次,而使用正则表达式替换它们(如@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);
Run Code Online (Sandbox Code Playgroud)
变量"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
祝你好运!
The*_*tan 10
使用正则表达式替换字符串比使用字符串替换要慢得多.
正如在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>
Run Code Online (Sandbox Code Playgroud)
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
Run Code Online (Sandbox Code Playgroud)
从这个答案的完整性(借鉴评论)开始,值得一提的是.replace
只能替换匹配字符的第一个实例.它唯一可以替换所有实例//g
.如果替换多个实例name.replace(' ', '_').replace(' ', '_').replace(' ', '_');
或更糟糕的话,性能权衡和代码优雅可能会更糟while (name.includes(' ')) { name = name.replace(' ', '_') }
嗯..你检查了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);
Run Code Online (Sandbox Code Playgroud)
小智 7
在JavaScript中,您可以replace
在String对象上调用该方法,例如"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
Run Code Online (Sandbox Code Playgroud)
JavaScript具有replace()
String对象的方法来替换子串.此方法可以有两个参数.第一个参数可以是字符串或正则表达式模式(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
Run Code Online (Sandbox Code Playgroud)
请注意,如果第一个参数是字符串,则仅替换第一次出现的子字符串,如上例所示.要替换所有出现的子字符串,您需要提供带有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
Run Code Online (Sandbox Code Playgroud)
请注意,您不要将正则表达式模式包装在引号中,这将使其成为字符串而不是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
Run Code Online (Sandbox Code Playgroud)
您可以使用函数作为第二个参数,对替换文本进行更多控制.
归档时间: |
|
查看次数: |
202698 次 |
最近记录: |