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.

0voto

sten Punkte 6152

Dies ist ein wohlbekanntes Problem, das in Perl mit chop() und chomp() wunderbar gelöst wird

lange Antwort hier : Java hacken und kauen

Hier ist der Code:

  //removing trailing characters
  public static String chomp(String str, Character repl) {
    int ix = str.length();
    for (int i=ix-1; i >= 0; i-- ){
      if (str.charAt(i) != repl) break;
      ix = i;
    }
    return str.substring(0,ix);
  }

  //hardcut  
  public static String chop(String str) {
    return str.substring(0,str.length()-1);
  }

0voto

Avinash Khadsan Punkte 361

Angenommen, die Gesamtlänge meiner Zeichenfolge ist 24 Ich möchte das letzte Zeichen nach Position 14 am Ende abschneiden, d.h. ich möchte, dass die 14 am Anfang steht. Ich wende also folgende Lösung an.

String date = "2019-07-31T22:00:00.000Z";
String result = date.substring(0, date.length() - 14);

0voto

Ersetzen Sie einfach die Bedingung von "if" wie folgt:

if(a.substring(a.length()-1).equals("x"))'

wird dies für Sie der richtige Weg sein.

0voto

Patrick Parker Punkte 4621

Hier ist eine Antwort, die mit Codepoints außerhalb der Basic Multilingual Plane (Java 8+) funktioniert.

Verwendung von Streams:

public String method(String str) {
    return str.codePoints()
            .limit(str.codePoints().count() - 1)
            .mapToObj(i->new String(Character.toChars(i)))
            .collect(Collectors.joining());
}

Vielleicht effizienter:

public String method(String str) {
    return str.isEmpty()? "": str.substring(0, str.length() - Character.charCount(str.codePointBefore(str.length())));
}

0voto

simon francis Punkte 17

Wie man das Zeichen in der Rekursion am Ende macht:

public static String  removeChar(String word, char charToRemove)
    {
        String char_toremove=Character.toString(charToRemove);
        for(int i = 0; i < word.length(); i++)
        {
            if(word.charAt(i) == charToRemove)
            {
                String newWord = word.substring(0, i) + word.substring(i + 1);
                return removeChar(newWord,charToRemove);
            }
        }
        System.out.println(word);
        return word;
    }

zum Beispiel:

removeChar ("hello world, let's go!",'l')  "heo word, et's go!llll"
removeChar("you should not go",'o')  "yu shuld nt goooo"

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