it-swarm.com.de

Ersetzen Sie den letzten Teil der Zeichenfolge

Ich möchte den letzten String, der ein , ist, durch ) ersetzen. 

Angenommen, die Zeichenfolge lautet:

In Dual einfügen (Name, Datum,

konvertiert werden in:

In Dual einfügen (Name, Datum)

38
Harish

Der folgende Code sollte das letzte Vorkommen eines ',' durch einen ')' ersetzen.

StringBuilder b = new StringBuilder(yourString);
b.replace(yourString.lastIndexOf(","), yourString.lastIndexOf(",") + 1, ")" );
yourString = b.toString();

Hinweis Dies löst Ausnahmen aus, wenn String keinen ',' enthält.

69
jjnguy

Sie können reguläre Ausdrücke verwenden:

String aResult = "Insert into dual (name,date,".replaceAll(",$", ")");

replaceAll(...) vergleicht den String string mit dem angegebenen regulären Ausdruck (Parameter 1) (in diesem Fall stimmen wir mit dem letzten Zeichen überein, wenn es sich um ein Komma handelt). Ersetzen Sie es durch einen Ersatz (Parameter 2) (in diesem Fall ist ')').

Plus! Wenn Sie sicherstellen möchten, dass Leerzeichen und Tabulatoren berücksichtigt werden, können Sie den regulären Ausdruck einfach in ",\[ \t\]*$" ändern. HINWEIS '\[' und '\]' sind ohne Backslash (ich weiß nicht, wie ich es richtig umgehen soll).

Hoffe das hilft.

37
NawaMan

Dies ist eine benutzerdefinierte Methode, um nur die letzte Teilzeichenfolge einer angegebenen Zeichenfolge zu ersetzen. Es wäre nützlich für Sie: 

private String replaceLast(String string, String from, String to) {
     int lastIndex = string.lastIndexOf(from);
     if (lastIndex < 0) return string;
     String tail = string.substring(lastIndex).replaceFirst(from, to);
     return string.substring(0, lastIndex) + tail;
}
17
Ivan Caderno
str = str.substring(0, str.lastIndexOf(",")) + ")";
8
sfussenegger

Der besser lesbare Weg ... Mit dem Sie mehr über String und seine Funktionen erfahren können

String myString = "Insert into dual (name,date,";
String newString = "";
int length = myString.length();
String lastChar = myString.substring(length-1);

if (lastChar.contains(",")) {
    newString = myString.substring(0,length-1) + ")";
} 

System.out.println(newString);
2
ty812

Überprüfen Sie die Länge der Zeichenfolge, überprüfen Sie das letzte Zeichen (wenn Sie die Länge haben, ist es einfach) Und ersetzen Sie es - falls erforderlich . Spezifisch. Verwenden Sie einfach einen gesunden Menschenverstand.

1
Dani

Verwende die Apaches StringUtils Funktion removeEnd () :

StringUtils.removeEnd("www.domain.com", ".com")   = "www.domain"
0
Philip Miglinci

Bei einer ähnlichen Suche fand ich diese Antwort:

https://stackoverflow.com/a/37066403/875282

Ich denke, es ist das Beste, weil es die Java-Methoden wie beabsichtigt verwendet, anstatt das Rad neu zu erfinden. Es liest den String im Wesentlichen rückwärts und verwendet die replaceFirst-Methode des String-Objekts. Genau das war es, wonach ich gesucht hatte.

Hier finden Sie die Dokumentation zur replaceFirst-String-Methode und der Reverse-Funktion von StringBuffer: https://docs.Oracle.com/javase/8/docs/api/Java/lang/String.html#replaceFirst-Java.lang .String-Java.lang.String-

https://docs.Oracle.com/javase/8/docs/api/Java/lang/StringBuffer.html#reverse--

So habe ich es implementiert, um einfach einige HTML-Tags aus einem Code-Snippet zu entfernen, das ich interpretieren wollte. Denken Sie daran, auch Ihre Suchzeichenfolge umzukehren, und kehren Sie dann zu den normalen Nachwörtern zurück.

private String stripHtmlPreTagsFromCodeSnippet(String snippet) {
    String halfCleanSnippet = snippet.replaceFirst("<pre>", "");
    String reverseSnippet = new StringBuffer(halfCleanSnippet).reverse().toString();
    String reverseSearch = new StringBuffer("</pre>").reverse().toString();
    String reverseCleanSnippet = reverseSnippet.replaceFirst(reverseSearch, "");
    return new StringBuffer(reverseCleanSnippet).reverse().toString();
}
0
matttrach

ERSETZEN EINES LETZTEN ZEICHENS DEINES STRINGS DURCH )

str = str.substring(0, str.length()-1)+")";

Stellen Sie sicher, dass Ihre Zeichenfolge nicht leer oder null ist.

0
Se Song

Versuchen Sie diese Regex (^.+)b(.+$)

Beispiel (Ersetzen Sie das letzte b Zeichen)

System.out.println("1abchhhabcjjjabc".replaceFirst("(^.+)b(.+$)", "$1$2"));
0