585 Stimmen

Wie entfernt man das letzte Zeichen aus einer Zeichenkette?

Ich möchte das letzte Zeichen aus einer Zeichenkette entfernen. Ich habe versucht, dies zu tun:

public String method(String str) {
    if (str.charAt(str.length()-1)=='x'){
        str = str.replace(str.substring(str.length()-1), "");
        return str;
    } else{
        return str;
    }
}

Ich erhalte die Länge der Zeichenkette - 1 und ersetze den letzten Buchstaben durch nichts (ich lösche ihn), aber jedes Mal, wenn ich das Programm ausführe, löscht es die mittleren Buchstaben, die mit dem letzten Buchstaben identisch sind.

Ein Beispiel: Das Wort ist "admirer"; nachdem ich die Methode ausgeführt habe, erhalte ich "admie". Ich möchte, dass sie das Wort "admire" zurückgibt.

790voto

Gyan aka Gary Buyn Punkte 12092

replace ersetzt alle Instanzen eines Buchstabens. Alles, was Sie tun müssen, ist die Verwendung von substring() :

public String method(String str) {
    if (str != null && str.length() > 0 && str.charAt(str.length() - 1) == 'x') {
        str = str.substring(0, str.length() - 1);
    }
    return str;
}

276voto

Fahim Parkar Punkte 29820

Warum nicht nur eine Zeile?

public static String removeLastChar(String str) {
    return removeLastChars(str, 1);
}

public static String removeLastChars(String str, int chars) {
    return str.substring(0, str.length() - chars);
}

Vollständiger Code

public class Main {
    public static void main (String[] args) throws java.lang.Exception {
        String s1 = "Remove Last CharacterY";
        String s2 = "Remove Last Character2";
        System.out.println("After removing s1==" + removeLastChar(s1) + "==");
        System.out.println("After removing s2==" + removeLastChar(s2) + "==");
    }

    public static String removeLastChar(String str) {
        return removeLastChars(str, 1);
    }

    public static String removeLastChars(String str, int chars) {
        return str.substring(0, str.length() - chars);
    }
}

Demo

112voto

iddqd Punkte 1289

Da wir gerade bei einem Thema sind, kann man auch reguläre Ausdrücke verwenden

"aaabcd".replaceFirst(".$",""); //=> aaabc

97voto

Mart135688 Punkte 1009

Das beschriebene Problem und die vorgeschlagenen Lösungen beziehen sich manchmal auf das Entfernen von Abscheidern. Wenn dies bei Ihnen der Fall ist, dann schauen Sie sich Apache Commons StringUtils an, es hat eine Methode namens removeEnd was sehr elegant ist.

Ejemplo:

StringUtils.removeEnd("string 1|string 2|string 3|", "|");

Würde dazu führen: "Zeichenfolge 1|Zeichenfolge 2|Zeichenfolge 3"

56voto

BobBobBob Punkte 586
public String removeLastChar(String s) {
    if (s == null || s.length() == 0) {
        return s;
    }
    return s.substring(0, s.length()-1);
}

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