Come sostituire tutti i punti in una stringa utilizzando JavaScript

Voglio sostituire tutte le occorrenze di un punto ( . ) In una stringa JavaScript

Ad esempio, ho:

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

Voglio ottenere: okay this is a string .

Finora ho provato:

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

ma questo finisce con tutta la stringa sostituita agli spazi.

Devi sfuggire al . perché ha il significato di “un carattere arbitrario” in un’espressione regolare.

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

Un’altra soluzione che è facile da capire 🙂

 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('.', ' ')); 

Più veloce dell’uso della regex …

MODIFICARE:
Forse nel momento in cui ho fatto questo codice non ho usato jsperf. Ma alla fine tale discussione è totalmente inutile, la differenza di prestazioni non vale la leggibilità del codice nel mondo reale, quindi la mia risposta è ancora valida, anche se la performance differisce dall’approccio regex.

EDIT2:
Ho creato una libreria che ti permette di fare ciò usando un’interfaccia fluente:

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

Vedi https://github.com/FagnerMartinsBrack/str-replace .

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

Per questo semplice scenario, vorrei anche raccomandare di usare i metodi che vengono compilati in javascript.

Potresti provare questo:

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

Saluti

Aggiungo il doppio backslash al punto per farlo funzionare. Cheer.

 var st = "okay.this.is.a.string"; var Re = new RegExp("\\.","g"); st = st.replace(Re," "); alert(st); 

Questo è più conciso / leggibile e dovrebbe funzionare meglio di quello pubblicato da Fagner Brack (toLowerCase non eseguito in loop):

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

Uso:

 alert('Bananas And Bran'.replaceAll('An', '(an)')); 
 String.prototype.replaceAll = function(character,replaceChar){ var word = this.valueOf(); while(word.indexOf(character) != -1) word = word.replace(character,replaceChar); return word; } 

Ecco un’altra implementazione di replaceAll. Spero che aiuti qualcuno.

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

Quindi puoi usarlo:

var myText = “Il mio nome è George”;
var newText = myText.replaceAll (“George”, “Michael”);

Esempio: Voglio sostituire tutte le doppie Quote (“) in Quote singole (‘) Quindi il codice sarà come questo

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

@ scripto è reso un po ‘più conciso e senza 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; } 

Ecco come impila: http://jsperf.com/replace-vs-split-join-vs-replaceall/68

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

è ansible sostituire tutte le occorrenze di qualsiasi stringa / carattere utilizzando l’object javasscript RegExp.

Ecco il codice,

 var mystring = 'okay.this.is.a.string'; var patt = new RegExp("\\."); while(patt.test(mystring)){ mystring = mystring .replace(".",""); } 
 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, "'"); }