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

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

例如,我有:

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

我想获得:okay this is a string

到目前为止,我尝试了:

mystring.replace(/./g,' ')

但这最终将所有字符串替换为空格。

611728 次浏览

你需要转义.,因为它在正则表达式中具有“任意字符”的含义。

mystring = mystring.replace(/\./g,' ')

还有一个很容易理解的解决方案:)

var newstring = mystring.split('.').join(' ');
/**
* 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('.', ' '));

比使用正则表达式快…

< p > 编辑: < br > 也许在我写这段代码的时候,我没有使用jsperf。但最终这样的讨论是完全没有意义的,性能差异不值得代码在现实世界中的易读性,所以我的答案仍然有效,即使性能与正则表达式方法不同 < p > EDIT2: < br > 我已经创建了一个库,允许您使用一个流畅的接口来做到这一点:

replace('.').from('okay.this.is.a.string').with(' ');

看到https://github.com/FagnerMartinsBrack/str-replace

str.replace(new RegExp(".","gm")," ")

我加了双反斜杠的点,使它工作。欢呼。

var st = "okay.this.is.a.string";
var Re = new RegExp("\\.","g");
st = st.replace(Re," ");
alert(st);
String.prototype.replaceAll = function(character,replaceChar){
var word = this.valueOf();


while(word.indexOf(character) != -1)
word = word.replace(character,replaceChar);


return word;
}

下面是replaceAll的另一个实现。希望它能帮助到别人。

    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 = "My Name is George" var newText = myText。replaceAll(“乔治”,“迈克尔”);< / p >

这更简洁/可读,应该比Fagner Brack发布的更好(toLowerCase不是在循环中执行的):

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);
}

用法:

alert('Bananas And Bran'.replaceAll('An', '(an)'));
var mystring = 'okay.this.is.a.string';
var myNewString = escapeHtml(mystring);


function escapeHtml(text) {
if('' !== text) {
return text.replace(/&amp;/g, "&")
.replace(/&lt;/g, "<")
.replace(/&gt;/g, ">")
.replace(/\./g,' ')
.replace(/&quot;/g, '"')
.replace(/&#39/g, "'");
}

对于这个简单的场景,我也建议使用javascript内置的方法。

你可以试试这个:

"okay.this.is.a.string".split(".").join("")

问候

示例:我想将所有双引号(")替换为单引号('),然后代码将如下所示

var str= "\"Hello\""
var regex = new RegExp('"', 'g');
str = str.replace(regex, '\'');
console.log(str); // 'Hello'

您可以使用RegExp javascript对象替换任何字符串/字符的所有出现。

这是代码,

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


var patt = new RegExp("\\.");


while(patt.test(mystring)){


mystring  = mystring .replace(".","");


}

@scripto变得更简洁,没有prototype:

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://jsperf.com/replace-vs-split-join-vs-replaceall/68

String.prototype.replaceAll = function (needle, replacement) {
return this.replace(new RegExp(needle, 'g'), replacement);
};
mystring.replace(new RegExp('.', "g"), ' ');

简单的方法

"Mr.".split('.').join("");

..............

控制台

enter image description here

replaceAll(search, replaceWith) [中数]

 ".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 "
    

replaceAll()将所有出现的search替换为replaceWith

它实际上与使用replace() [中数]和全局正则表达式(*)是一样的,只是在我看来replaceAll()更具可读性。

(*)表示它将匹配所有的事件。


重要(),如果你选择regex:

当使用regexp时,你必须设置全局("g")标志; 否则,它将抛出TypeError:必须调用replaceAll

. a全局RegExp"

从前有一个国王。opeator传播。让。版本。const !”;

data = a.replaceAll(“管理者”、““);

回答: data =“曾经有一个king spread operator let ver constare”;;

你需要在该字符串上使用replaceAll ()方法。