Oma*_*bid 410 javascript string replace
我想替换.JavaScript字符串中所有出现的dot()
例如,我有:
var mystring = 'okay.this.is.a.string';
Run Code Online (Sandbox Code Playgroud)
我想得到:okay this is a string.
到目前为止我试过:
mystring.replace(/./g,' ')
Run Code Online (Sandbox Code Playgroud)
但最终将所有字符串替换为空格.
aef*_*fxx 745
你需要逃避.它,因为它在正则表达式中具有"任意字符"的含义.
mystring = mystring.replace(/\./g,' ')
Run Code Online (Sandbox Code Playgroud)
Ume*_*til 298
还有一个易于理解的解决方案:)
var newstring = mystring.split('.').join(' ');
Run Code Online (Sandbox Code Playgroud)
Fag*_*ack 52
/**
* ReplaceAll by Fagner Brack (MIT Licensed)
* Replaces all occurrences of a substring in a string
*/
String.prototype.replaceAll = function( token, newToken, ignoreCase ) {
var _token;
var str = this + "";
var i = -1;
if ( typeof token === "string" ) {
if ( ignoreCase ) {
_token = token.toLowerCase();
while( (
i = str.toLowerCase().indexOf(
_token, i >= 0 ? i + newToken.length : 0
) ) !== -1
) {
str = str.substring( 0, i ) +
newToken +
str.substring( i + token.length );
}
} else {
return this.split( token ).join( newToken );
}
}
return str;
};
alert('okay.this.is.a.string'.replaceAll('.', ' '));
Run Code Online (Sandbox Code Playgroud)
比使用正则表达式更快......
编辑:
也许在我做这个代码时我没有使用jsperf.但最终这种讨论毫无意义,性能差异不值得现实世界中代码的易读性,所以即使性能与正则表达式方法不同,我的答案仍然有效.
EDIT2:
我创建了一个lib,允许您使用流畅的界面执行此操作:
replace('.').from('okay.this.is.a.string').with(' ');
Run Code Online (Sandbox Code Playgroud)
请参阅https://github.com/FagnerMartinsBrack/str-replace.
Vic*_*tor 14
对于这个简单的场景,我还建议使用javascript中内置的方法.
你可以试试这个:
"okay.this.is.a.string".split(".").join("")
Run Code Online (Sandbox Code Playgroud)
问候
小智 6
我在点上添加双反斜杠以使其工作.欢呼.
var st = "okay.this.is.a.string";
var Re = new RegExp("\\.","g");
st = st.replace(Re," ");
alert(st);
Run Code Online (Sandbox Code Playgroud)
replaceAll(search, replaceWith)[ MDN ]
".a.b.c.".replaceAll('.', ' ')
// result: " a b c "
// Using RegEx. You MUST use a global RegEx.
".a.b.c.".replaceAll(/\./g, ' ')
// result: " a b c "
Run Code Online (Sandbox Code Playgroud)
replaceAll()将所有出现的 替换search为replaceWith。
replace()它实际上与使用[ MDN ] 和全局正则表达式(*)相同,只是replaceAll()在我看来更具可读性。
(*) 表示它将匹配所有出现的情况。
重要的是(!)如果您选择正则表达式:
使用 a 时,
regexp您必须设置全局(“g”)标志;否则,它将抛出 TypeError:“replaceAll 必须使用全局 RegExp 调用”。