[java] 문자열에서 마지막 문자를 제거하는 방법?

문자열에서 마지막 문자를 제거하고 싶습니다. 나는 이것을 시도했다.

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

문자열의 길이-1을 얻고 마지막 문자를 아무것도 바꾸지 않고 (삭제), 프로그램을 실행할 때마다 마지막 문자와 동일한 중간 문자가 삭제됩니다.

예를 들어, 단어는 “좋아요”입니다. 메서드를 실행하면 “admie”가 나타납니다. 나는 그것을 존경하는 단어로 돌려주고 싶다.



답변

replace문자의 모든 인스턴스를 대체합니다. 당신이해야 할 일은 사용입니다 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;
}


답변

왜 하나의 라이너가 아닌가?

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

전체 코드

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

데모


답변

우리는 주제에 있기 때문에 정규 표현식도 사용할 수 있습니다

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


답변

기술 된 문제점 및 제안 된 해결책은 때때로 분리기를 제거하는 것과 관련된다. 이 경우 Apache Commons StringUtils를 살펴보고 removeEnd 라는 메소드가 있습니다. . 매우 우아한 가 있습니다.

예:

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

“문자열 1 | 문자열 2 | 문자열 3”


답변

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


답변

다른 사람들은 이미 문자열 조작을 수행하기 위해 라이브러리를 작성했지만 바퀴를 다시 만들려고 시도하지 마십시오.
org.apache.commons.lang3.StringUtils.chop()


답변

이것을 사용하십시오 :

 if(string.endsWith("x")) {

    string= string.substring(0, string.length() - 1);
 }