48 Stimmen

Wie ersetzt man das letzte Vorkommen von Zeichen in einer Zeichenkette mit Javascript

Ich habe ein Problem damit, herauszufinden, wie man das letzte ', ' in einer Zeichenfolge durch ' und ' ersetzt:

Mit dieser Zeichenfolge: test1, test2, test3

und ich möchte damit enden: test1, test2 und test3

Ich versuche etwas in dieser Richtung:

var dialog = 'test1, test2, test3';    
dialog = dialog.replace(new RegExp(', /g').lastIndex, ' and ');

aber es funktioniert nicht

78voto

annakata Punkte 72408
foo.replace(/,([^,]*)$/, ' and $1')

verwenden Sie die $ ( Zeilenende ), um Ihre Position zu bestimmen, und suchen Sie nach einem Muster rechts vom Kommaindex, das keine weiteren Kommata enthält.

Bearbeiten:

Die obige Version entspricht genau den definierten Anforderungen (obwohl die Ersetzungszeichenfolge willkürlich locker ist), aber aufgrund der Kritik in den Kommentaren gibt die folgende Version den Geist der ursprünglichen Anforderung besser wieder.

console.log( 
   'test1, test2, test3'.replace(/,\s([^,]+)$/, ' and $1') 
)

5voto

splash Punkte 12777
result = dialog.replace(/,\s(\w+)$/, " and $1");

$1 bezieht sich auf die erste Erfassungsgruppe (\w+) des Spiels.

-1voto

ricksalmon Punkte 1

Regex-Suchmuster \s ([^,]+)$

Line1: If not, sdsdsdsdsa sas ., sad, whaterver4
Line2: If not, fs  sadXD sad ,  ,sadXYZ!X
Line3: If not d,,sds,, sasa sd a, sds, 23233

Suche mit Mustern findet Zeile1: whaterver4 Zeile3: 23233

Findet aber nicht Zeile2: sadXYZ!X
Es fehlt nur ein Leerzeichen

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X