How to replace all dots in a string using JavaScript
我想替换javascript字符串中所有出现的点(
例如,我有:
1 | var mystring = 'okay.this.is.a.string'; |
我想知道:
到目前为止,我试过:
1 | mystring.replace(/./g,' ') |
但最后所有的字符串都被替换为空格。
您需要转义
1 | mystring = mystring.replace(/\./g,' ') |
还有一个简单易懂的解决方案:)
1 | var newstring = mystring.split('.').join(' '); |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | /** * 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('.', ' ')); |
比使用regex更快…
编辑:也许在我编写这段代码的时候,我没有使用JSPerf。但最后这种讨论完全没有意义,性能差异不值得代码在现实世界中的易读性,所以我的答案仍然有效,即使性能与regex方法不同。
编辑2:我已经创建了一个lib,它允许您使用一个流畅的接口来完成这项工作:
1 | replace('.').from('okay.this.is.a.string').with(' '); |
请参阅https://github.com/fagnermartinsback/str-replace。
1 | str.replace(new RegExp(".","gm"),"") |
对于这个简单的场景,我还建议使用JavaScript内置的方法。
你可以试试这个:
1 | "okay.this.is.a.string".split(".").join("") |
问候语
我在圆点上加了两个反斜杠使它起作用。欢呼。
1 2 3 4 | var st ="okay.this.is.a.string"; var Re = new RegExp("\\.","g"); st = st.replace(Re,""); alert(st); |
这更简洁/易读,并且应该比Fagner Brack发布的更出色(Tolowercase不在循环中执行):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | String.prototype.replaceAll = function(search, replace, ignoreCase) { if (ignoreCase) { var result = []; var _string = this.toLowerCase(); var _search = search.toLowerCase(); var start = 0, match, length = _search.length; while ((match = _string.indexOf(_search, start)) >= 0) { result.push(this.slice(start, match)); start = match + length; } result.push(this.slice(start)); } else { result = this.split(search); } return result.join(replace); } |
用途:
1 | alert('Bananas And Bran'.replaceAll('An', '(an)')); |
这里是replaceall的另一个实现。希望它能帮助别人。
1 2 3 4 5 6 7 8 9 10 | String.prototype.replaceAll = function (stringToFind, stringToReplace) { if (stringToFind === stringToReplace) return this; var temp = this; var index = temp.indexOf(stringToFind); while (index != -1) { temp = temp.replace(stringToFind, stringToReplace); index = temp.indexOf(stringToFind); } return temp; }; |
然后您可以使用它:
var mytext="我的名字是乔治";var newtext=mytext.replaceall("george","michael");
1 2 3 4 5 6 7 8 | String.prototype.replaceAll = function(character,replaceChar){ var word = this.valueOf(); while(word.indexOf(character) != -1) word = word.replace(character,replaceChar); return word; } |
1 2 3 | String.prototype.replaceAll = function (needle, replacement) { return this.replace(new RegExp(needle, 'g'), replacement); }; |
@scripto做得更简洁一些,没有
1 2 3 4 5 6 | function strReplaceAll(s, stringToFind, stringToReplace) { if (stringToFind === stringToReplace) return s; for (let index = s.indexOf(stringToFind); index != -1; index = s.indexOf(stringToFind)) s = s.replace(stringToFind, stringToReplace); return s; } |
它的堆叠方式如下:http://jspef.com/replace-vs-split-join-vs-replaceall/68
示例:我想将所有双引号(")替换为单引号(""),则代码如下
1 2 3 4 | var str=""Hello"" var regex = new RegExp('"', 'g'); str = str.replace(regex, '\''); console.log(str); // 'Hello' |
可以使用regexp javasscript对象替换任何字符串/字符的所有匹配项。
这是密码,
1 2 3 4 5 6 7 8 9 | var mystring = 'okay.this.is.a.string'; var patt = new RegExp("\\."); while(patt.test(mystring)){ mystring = mystring .replace(".",""); } |
1 2 3 4 5 6 7 8 9 10 11 12 | var mystring = 'okay.this.is.a.string'; var myNewString = escapeHtml(mystring); function escapeHtml(text) { if('' !== text) { return text.replace(/&/g,"&") .replace(/</g,"<") .replace(/>/g,">") .replace(/\./g,' ') .replace(/"/g, '"') .replace(/'/g,"'"); } |