¿Cómo eliminar el último carácter de una cadena?

Resuelto asked hace 13 años • 36 respuestas

Quiero eliminar el último carácter de una cadena. Intenté hacer esto:

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

Obteniendo la longitud de la cadena - 1 y reemplazando la última letra con nada (eliminándola), pero cada vez que ejecuto el programa, elimina las letras del medio que son iguales a la última letra.

Por ejemplo, la palabra es "admirador"; Después de ejecutar el método, aparece "admie". Quiero que devuelva la palabra admirar.

 avatar Sep 16 '11 06:09
Aceptado

replacereemplazará todas las instancias de una letra. Todo lo que necesitas hacer es usar 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;
}
Gyan aka Gary Buyn avatar Sep 15 '2011 23:09 Gyan aka Gary Buyn

¿Por qué no una sola línea?

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

public static String removeChars(String str, int numberOfCharactersToRemove) {
    if(str != null && !str.trim().isEmpty()) {
        return str.substring(0, str.length() - numberOfCharactersToRemove);
    }
    return "";
}

Código completo

public class Main
{
    public static void main (String[] args) throws java.lang.Exception
    {
        String s1 = "Remove Last CharacterY";
        String s2 = "Remove Last Character2";
        String s3 = "N";
        String s4 = null;
        String s5 = "";
        System.out.println("After removing s1==" + removeLastChar(s1) + "==");
        System.out.println("After removing s2==" + removeLastChar(s2) + "==");
        System.out.println("After removing s3==" + removeLastChar(s3) + "==");
        System.out.println("After removing s4==" + removeLastChar(s4) + "==");
        System.out.println("After removing s5==" + removeLastChar(s5) + "==");
        }
    
    public static String removeLastChar(String str) {
        return removeChars(str, 1);
    }

    public static String removeChars(String str, int numberOfCharactersToRemove) {
        if(str != null && !str.trim().isEmpty()) {
            return str.substring(0, str.length() - numberOfCharactersToRemove);
        }
        return "";
    }
}

Manifestación

Fahim Parkar avatar Dec 22 '2012 10:12 Fahim Parkar