2015-08-11 4 views

Antwort

30

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, ' '); 
    }; 
}); 
+0

Dies schlägt fehl, wenn "input" keine Zeichenfolge ist oder wenn "input" null oder undefined ist. – Max

+0

einfach, verwenden Sie einfach einen if stmt für die Zustandsprüfung. –

8

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.

+0

große ans. funktioniert perfekt für jede Replication –

0

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.

+0

BratisLatas Ich mochte Ihre Methode, aber es scheint nur nur eine Instanz zu ersetzen, nicht mehrere. – mediaguru