Wie wird der letzte Punkt in einer Zeichenfolge durch einen regulären Ausdruck ersetzt?

7

Ich versuche, den letzten Punkt in einem String mit einem regulären Ausdruck zu ersetzen.

Sagen wir, ich habe den folgenden String:

%Vor%

Ich möchte den letzten Punkt durch ein Ausrufezeichen ersetzen, so dass das Ergebnis lautet:

%Vor%

Ich habe verschiedene Ausdrücke mit der Methode String.replaceAll(String, String) ohne Glück ausprobiert.

    
digiarnie 04.11.2010, 05:03
quelle

4 Antworten

12

Ein Weg wäre:

%Vor%

Alternativ können Sie negative Lookahead als:

verwenden %Vor%

Regex in Aktion

    
codaddict 04.11.2010, 05:05
quelle
8

Obwohl Sie einen Regex verwenden können, ist es manchmal am besten, einen Schritt zurückzutreten und es auf die altmodische Weise zu tun. Ich war immer der Überzeugung, dass es, wenn man in zwei Minuten nicht an eine Regex denken kann, es wahrscheinlich nicht für eine Regex-Lösung geeignet ist.

Zweifellos erhalten Sie hier einige wunderbare Regex-Antworten. Einige von ihnen sind vielleicht sogar lesbar: -)

Sie können % co_de verwenden % , um das letzte Vorkommen zu erhalten und lastIndexOf um eine neue Zeichenkette zu erstellen: Dieses komplette Programm zeigt wie:

%Vor%

Die Ausgabe ist:

%Vor%     
paxdiablo 04.11.2010 05:07
quelle
7

Der Regex, den Sie brauchen, ist \.(?=[^.]*$) . Das ?= ist eine Lookahead-Assertion

%Vor%     
John La Rooy 04.11.2010 05:12
quelle
1

Versuchen Sie Folgendes:

%Vor%     
panticz.de 21.04.2015 08:34
quelle

Tags und Links