2016-10-18 4 views
-3

Mein Problem besteht darin, nur das letzte Vorkommen eines Zeichens in der Zeichenfolge durch ein anderes Zeichen zu ersetzen. Wenn ich String.replace (char1, char2) verwendete, ersetzt es alle Vorkommen des Zeichens in der Zeichenfolge.String ersetzen Methode Problem in Java

Zum Beispiel habe ich eine Adresse Zeichenfolge wie

String str = "Addressline1,Addressline2,City,State,Country,";.

Ich muss das Vorkommen von ',' am Ende der Zeichenfolge durch '.' Ersetzen.

Mein Code, den Charakter zu ersetzen ist

str = str.replace(str.charAt(str.lastIndexOf(",")),'.'); 

nach dem Ersetzen die Zeichenfolge wie folgt aussieht:

Addressline1.Addressline2.City.State.Country.

Gibt es das Problem in Java SDK ?. Wenn ja, wie löst man es?

+1

Nein, '# replace' nimmt ein Zeichenargument und ersetzt es durch das zweite. Du hast effektiv gesagt: "Finde den Charakter an der Stelle, an der das Zeichen ist", ', und ersetze dann alle diese Zeichen durch' .' " – Rogue

+0

probiere dies aus . –

+0

Es scheint etwas Verwirrung darüber zu geben, was Sie wollen. Möchten Sie (1) das letzte Zeichen der Zeichenkette durch '.' ersetzen, egal was es ist; (2) Ersetzen Sie das letzte Zeichen der Zeichenfolge durch '.'nur wenn es ein Komma ist; oder (3) das letzte _comma_ in der Zeichenkette durch '.' ersetzen, auch wenn dem Komma Zeichen folgen? – ajb

Antwort

-1

Die Java replace function eine Methode Erklärung hat:

public String replace(char oldChar, char newChar) 

die Dokumentation Laut replace wird:

Gibt eine neue Zeichenfolge zurück, die durch Ersetzen aller Vorkommen von in dieser Zeichenfolge durch newChar entsteht.

So Ihr Code:

str.charAt(str.lastIndexOf(",")) 

Wird eindeutig den Charakter , zurückzukehren. replace wird dann alle Instanzen der oldChar, durch die newChar. ersetzen. Dies erklärt das Verhalten, das Sie gesehen haben.

Die Lösung, die mir die beste Wahl schlagen @ScaryWombat ist:

str = str.replaceAll(",$", "."); 

Da im regulären Ausdruck Begriffen bezeichnet $ das Ende eines String.

Hoffe, das hilft!

3

sollten Sie verwenden String.replaceAll die

regex verwenden
str = str.replaceAll (",$", "."); 

Die $ das Ende des

String bedeuten
+0

Ich glaube nicht, dass das richtig ist. Ich denke, dass er versucht, das letzte Komma in der Zeichenfolge zu ersetzen, selbst wenn das Komma nicht das letzte Zeichen der Zeichenfolge ist. Dein Code tut das nicht. Auf der anderen Seite hat er deine Antwort gerade genehmigt, als ich diesen Kommentar eingegeben habe, vielleicht ist es das, was er will. – ajb

+0

@ajb 'Ich muss das Vorkommen von', 'am Ende der Zeichenfolge durch'. 'Ersetzen. ' –

+0

OK, ich sehe, dass die OP Art von sich widersprach. – ajb