Advertisement
Advertisement


How to remove the last character from a string?


Question

I want to remove the last character from a string. I've tried doing this:

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

Getting the length of the string - 1 and replacing the last letter with nothing (deleting it), but every time I run the program, it deletes middle letters that are the same as the last letter.

For example, the word is "admirer"; after I run the method, I get "admie." I want it to return the word admire.

2015/08/21
1
501
8/21/2015 7:17:17 AM

Accepted Answer

replace will replace all instances of a letter. All you need to do is use 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;
}
2017/06/11
689
6/11/2017 10:32:35 PM

Why not just one liner?

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

Full 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

2020/08/10

Since we're on a subject, one can use regular expressions too

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

The described problem and proposed solutions sometimes relate to removing separators. If this is your case, then have a look at Apache Commons StringUtils, it has a method called removeEnd which is very elegant.

Example:

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

Would result in: "string 1|string 2|string 3"

2017/05/24

public String removeLastChar(String s) {
    if (s == null || s.length() == 0) {
        return s;
    }
    return s.substring(0, s.length()-1);
}
2011/09/16

Don't try to reinvent the wheel, while others have already written libraries to perform string manipulation: org.apache.commons.lang3.StringUtils.chop()

2017/05/24

Source: https://stackoverflow.com/questions/7438612
Licensed under: CC-BY-SA with attribution
Not affiliated with: Stack Overflow
Email: [email protected]