如何使用javascript替换字符串中的所有点

How to replace all dots in a string using JavaScript

我想替换javascript字符串中所有出现的点(.)

例如,我有:

1
var mystring = 'okay.this.is.a.string';

我想知道: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做得更简洁一些,没有prototype

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(/&lt;/g,"<")
               .replace(/&gt;/g,">")
               .replace(/\./g,' ')
               .replace(/&quot;/g, '"')
               .replace(/&#39/g,"'");
}