Kuinka poistaa viimeinen merkki merkkijonosta?

Haluan poistaa viimeisen merkin merkkijonosta. Olen yrittänyt tehdä näin:

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;
    }
}

Saada merkkijonon pituus - 1 ja korvata viimeinen kirjain tyhjällä (poistaa sen), mutta joka kerta, kun suoritan ohjelman, se poistaa keskimmäiset kirjaimet, jotka ovat samat kuin viimeinen kirjain.

Esimerkiksi sana on "ihailija"; kun suoritan menetelmän, saan "admie." Haluan sen palauttavan sanan ihailla.

Ratkaisu

replace korvaa kaikki kirjaimen esiintymät. Sinun tarvitsee vain käyttää 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;
}
Kommentit (11)

Miksei vain yksi rivi?

private static String removeLastChar(String str) {
    return str.substring(0, str.length() - 1);
}

Täysi koodi

import java.util.*;
import java.lang.*;

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) + "==");

    }

    private static String removeLastChar(String str) {
        return str.substring(0, str.length() - 1);
    }
}

Demo

Kommentit (5)
public String removeLastChar(String s) {
    if (s == null || s.length() == 0) {
        return s;
    }
    return s.substring(0, s.length()-1);
}
Kommentit (2)