2015-08-11 13 views

risposta

30

string.replace non solo accetta stringa come primo argomento, ma anche accetta espressioni regolari come primo argomento. Quindi inserire _ all'interno dei delimitatori regex / e aggiungere anche il modificatore g insieme a quello. g chiamato modificatore globale che eseguirà la sostituzione a livello globale.

App.filter('underscoreless', function() { 
    return function (input) { 
     return input.replace(/_/g, ' '); 
    }; 
}); 
+0

Questo errore se 'input' non è una stringa, o se' input' è null o undefined. – Max

+0

semplice, basta usare un if stmt per il controllo delle condizioni. –

8

Ecco un generico sostituire il filtro alternativa

App.filter('strReplace', function() { 
    return function (input, from, to) { 
    input = input || ''; 
    from = from || ''; 
    to = to || ''; 
    return input.replace(new RegExp(from, 'g'), to); 
    }; 
}); 

Usarlo come segue nel codice HTML:

{{ addText | strReplace:'_':' ' }} 

nota minore: Alcune tag HTML nel parametro to causerà l'espressione fallire a causa delle regole di sicurezza del contenuto angolare.

+0

great ans. funziona perfettamente per qualsiasi risorsa –

0

C'è un metodo easyer:

Si potrebbe sostituirlo in linea senza un filtro definito. Questo è il modo.

Questo esempio è da sostituire solo nella vista.

{{ value.replace(/_/g, ' ') }} 

Spero che possa aiutare in un semplice cambiamento, se si desidera cambiare in più punti, utilizzare il filtro.

+0

BratisLatas Mi è piaciuto il tuo metodo, tuttavia sembra sostituire solo una sola istanza, non più. – mediaguru