JavaScript ha il replace()
metodo dell'oggetto String per sostituire le sottostringhe. Questo metodo può avere due argomenti. Il primo argomento può essere una stringa o un modello di espressione regolare (oggetto regExp) e il secondo argomento può essere una stringa o una funzione. Di replace()
seguito è mostrato un esempio di metodo con entrambi gli argomenti stringa.
var text = 'one, two, three, one, five, one';
var new_text = text.replace('one', 'ten');
console.log(new_text) //ten, two, three, one, five, one
Si noti che se il primo argomento è la stringa, viene sostituita solo la prima occorrenza della sottostringa come nell'esempio sopra. Per sostituire tutte le occorrenze della sottostringa è necessario fornire un'espressione regolare con un g
flag (globale). Se non si fornisce il flag globale, verrà sostituita solo la prima occorrenza della sottostringa anche se si fornisce l'espressione regolare come primo argomento. Quindi sostituiamo tutte le occorrenze dell'esempio one
sopra.
var text = 'one, two, three, one, five, one';
var new_text = text.replace(/one/g, 'ten');
console.log(new_text) //ten, two, three, ten, five, ten
Nota che non racchiudi il modello di espressione regolare tra virgolette che lo renderà una stringa e non un oggetto regExp. Per eseguire una sostituzione senza distinzione tra maiuscole e minuscole, è necessario fornire un flag aggiuntivo i
che renda la distinzione tra maiuscole e minuscole. In tal caso l'espressione regolare sopra sarà /one/gi
. Nota la i
bandiera aggiunta qui.
Se il secondo argomento ha una funzione e se esiste una corrispondenza, la funzione viene passata con tre argomenti. Gli argomenti ottenuti dalla funzione sono la corrispondenza, la posizione della corrispondenza e il testo originale. Devi restituire ciò con cui quella partita deve essere sostituita. Per esempio,
var text = 'one, two, three, one, five, one';
var new_text = text.replace(/one/g, function(match, pos, text){
return 'ten';
});
console.log(new_text) //ten, two, three, ten, five, ten
Puoi avere un maggiore controllo sul testo sostitutivo usando una funzione come secondo argomento.
str_replace
accettano anche due array della stessa lunghezza, in cui ogni stringa nel primo array viene sostituita con la stringa nel secondo array nello stesso indice. Si prega di consultare stackoverflow.com/a/5069776/296430 per l'unica funzione corretta che ho trovato finora che imita questo comportamento esatto in javascript.