2016-03-25 11 views
1

Ich habe diese Frage nachgeschlagen, bin aber neu im Codieren, daher bin ich nicht ganz in der Lage, andere Antworten darauf zu beziehen.Wie ersetzt man mehrere Zeichen außer dem ersten?

ein String s Gegeben, geben einen String
wo alle Vorkommen des ersten char haben zu ‚*‘ geändert wurde, außer nicht
das erste Zeichen selbst ändern. z.B. 'babble' ergibt 'ba ** le' Angenommen, die Zeichenfolge hat die Länge 1 oder mehr. Hinweis: s.replace (stra, strb) gibt eine Version der Zeichenfolge s zurück, in der alle Instanzen von str durch strb ersetzt wurden.

Dies ist, was ich habe, aber das ersetzt nicht jedes Zeichen nach dem ersten, es ersetzt nur das nächste Zeichen.

function fixStart(s) 
    { 
    var c = s.charAt(0); 
    return c + s.slice(1).replace(c, '*'); 
    } 

Antwort

0

Um alle Vorkommen nicht nur die erste zu ersetzen, können Sie ein RegExp:

function fixStart(s) { 
    var c = s.charAt(0); 
    return c + s.slice(1).replace(new RegExp(c, 'g'), '*'); 
} 

Zum Beispiel, wenn der Wert von c „b“ ist, dann new RegExp(c, 'g') zu /b/g entspricht.

Dies funktioniert für einfache Strings wie "babble" in Ihrem Beispiel. Wenn die Zeichenfolge mit speziellen Symbolen beginnt, die etwas in Regex bedeuten, z. B. ".", Müssen Sie sie umgehen, wie @Oriol in einem Kommentar darauf hingewiesen hat. Sehen Sie, wie es in this other answer getan wird.

+0

Dank @Oriol, guter Punkt, zu meinem Beitrag hinzugefügt. – janos

0
function fixStart(s) { 
    var c = s.charAt(0); 
    var outputStr = ''; 
    // literate through the entire string pushing letters into a new string unless it is the first letter 
    for (var i = 0; i < s.length; i++) { 
     // if the letter is the first letter AND we are not checking the first letter 
     if (s[i] === c && i !== 0) outputStr += '*' 
     else outputStr += s[i] 
    } 
    return outputStr; 
    } 

    console.log(fixStart('hellohahaha')) 
Verwandte Themen