我想在Javascript中使用String.replace执行字符串的全局替换.
在文档中,我读到我可以使用/ g执行此操作,例如;
var mystring = mystring.replace(/test/g, mystring);
Run Code Online (Sandbox Code Playgroud)
这将取代mystring内的所有事件.表达式没有引号.
但如果我有一个变量可以找到,我怎么能没有引号?
我尝试过这样的事情:
var stringToFind = "test";
Run Code Online (Sandbox Code Playgroud)
//第一次尝试
mystring = mystring.replace('/' + stringToFind + '/g', mystring);
Run Code Online (Sandbox Code Playgroud)
//第二次尝试,根本没有多大意义
mystring = mystring.replace(/stringToFind/g, mystring);
Run Code Online (Sandbox Code Playgroud)
但他们不起作用.有任何想法吗?
Pao*_*ino 188
var mystring = "hello world test world";
var find = "world";
var regex = new RegExp(find, "g");
alert(mystring.replace(regex, "yay")); // alerts "hello yay test yay"
Run Code Online (Sandbox Code Playgroud)
如果你需要这个功能
replaceGlobally(original, searchTxt, replaceTxt) {
const regex = new RegExp(searchTxt, 'g');
return original.replace(regex, replaceTxt) ;
}
Run Code Online (Sandbox Code Playgroud)
bob*_*nce 74
对于正则表达式,new RegExp(stringtofind, 'g');
.但.如果'find'包含正则表达式中特有的字符,它们将具有其regexy含义.所以如果你试图替换'.' 在'abc.def'和'x'中,你得到'xxxxxxx' - 哎呀.
如果你想要的只是一个简单的字符串替换,那么就不需要正则表达式了!这是普通的字符串替换习语:
mystring= mystring.split(stringtofind).join(replacementstring);
Run Code Online (Sandbox Code Playgroud)
Lex*_*Lex 37
正则表达式比字符串搜索慢得多.因此,使用转义搜索字符串创建正则表达式不是最佳方式.即使循环使用字符串也会更快,但我建议使用内置的预编译方法.
这是快速全新的字符串替换快速而简洁的方法:
sMyString.split(sSearch).join(sReplace);
Run Code Online (Sandbox Code Playgroud)
就是这样.
uni*_*ogo 16
String.prototype.replaceAll = function (replaceThis, withThis) {
var re = new RegExp(RegExp.quote(replaceThis),"g");
return this.replace(re, withThis);
};
RegExp.quote = function(str) {
return str.replace(/([.?*+^$[\]\\(){}-])/g, "\\$1");
};
var aa = "qwerr.erer".replaceAll(".","A");
alert(aa);
Run Code Online (Sandbox Code Playgroud)
小智 10
您可以使用以下解决方案对包含 '/' 和 '/g' 变量的字符串执行全局替换:
myString.replace(new RegExp(strFind, 'g'), strReplace);
Run Code Online (Sandbox Code Playgroud)
Hea*_*ser -23
你可以使用prototype.js吗?如果是这样,你可以使用 String.gsub,比如
var myStr = "a day in a life of a thing";
var replace = "a";
var resultString = myStr.gsub(replace, "g");
// resultString will be "g day in g life of g thing"
Run Code Online (Sandbox Code Playgroud)
它还需要正则表达式。对我来说,这是解决这个问题的更优雅的方法之一。prototypejs gsub 文档
归档时间: |
|
查看次数: |
73346 次 |
最近记录: |