Ich brauche einen Filter alle Unterstrichen auf Räume in einem nurAngular Filter alle ersetzen unterstreicht auf Räume
Antwort
string.replace
nicht Zeichenfolge zu ersetzen akzeptiert Zeichenfolge als erstes Argument, sondern auch akzeptiert es regex als erstes Argument. Setzen Sie also _
in Regex Delimiters /
und fügen Sie auch g
Modifikator hinzu. g
genannt globaler Modifikator, der den Ersatz global tun wird.
App.filter('underscoreless', function() {
return function (input) {
return input.replace(/_/g, ' ');
};
});
Hier ist ein generischer Filter alternativen
App.filter('strReplace', function() {
return function (input, from, to) {
input = input || '';
from = from || '';
to = to || '';
return input.replace(new RegExp(from, 'g'), to);
};
});
Verwenden Sie es ersetzen, wie in Ihrem HTML folgt:
{{ addText | strReplace:'_':' ' }}
Minor Hinweis: Alle HTML-Tags im to
Parameter bewirkt, dass der Ausdruck aufgrund von Sicherheitsregeln für Angular Content fehlschlagen.
große ans. funktioniert perfekt für jede Replication –
Es gibt eine easyer Methode:
Sie es inline ohne definierte Filter ersetzen könnte. Das ist der Weg.
Dieses Beispiel ist für nur in der Ansicht zu ersetzen.
{{ value.replace(/_/g, ' ') }}
Ich hoffe, es könnte in einer einfachen Änderung helfen, wenn Sie in mehr Orten ändern möchten, verwenden Sie den Filter.
BratisLatas Ich mochte Ihre Methode, aber es scheint nur nur eine Instanz zu ersetzen, nicht mehrere. – mediaguru
Dies schlägt fehl, wenn "input" keine Zeichenfolge ist oder wenn "input" null oder undefined ist. – Max
einfach, verwenden Sie einfach einen if stmt für die Zustandsprüfung. –