1. 개요

이 빠른 기사에서는 문자열 의 마지막 문자를 제거하는 다양한 기술을 확인하고 논의 할 것 입니다.

2. String.substring () 사용

가장 쉬운 방법은 String 클래스 의 내장 substring () 메서드 를 사용하는 것 입니다.

주어진 문자열 의 마지막 문자를 제거 하려면 두 개의 매개 변수를 사용해야 합니다. 시작 색인으로 0 과 두 번째 문자의 색인입니다. Stringlength () 메서드 를 호출 하고 결과에서 1빼서 이를 달성 할 수 있습니다.

그러나이 메서드는 null-safe가 아니며 빈 문자열을 사용하면 실패합니다.

null 및 빈 문자열 문제를 극복하기 위해 메서드를 도우미 클래스로 래핑 할 수 있습니다.

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

코드를 리팩토링하고 Java 8을 사용할 수 있습니다.

public static String removeLastCharOptional(String s) {
    return Optional.ofNullable(s)
      .filter(str -> str.length() != 0)
      .map(str -> str.substring(0, str.length() - 1))
      .orElse(s);
    }

3. StringUtils.substring () 사용

바퀴를 재발 명하는 대신 , 유용한 String 연산 을 제공하는 Apache Commons Lang3 라이브러리의 StringUtils 클래스를 사용할 수 있습니다 . 그중 하나 는 예외를 처리 하는 null-safe substring () 메서드 입니다.

StringUtils 를 포함하려면 pom.xml 파일 을 업데이트해야 합니다.

<dependency>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-lang3</artifactId>
    <version>3.11</version>
</dependency>

StringUtils.substring () 은 세 개의 매개 변수를 필요로합니다 : 주어진 문자열, 첫 번째 문자의 색인 (우리의 경우에는 항상 0이 될 것입니다), 두 번째 문자의 색인. 다시 말하지만 length () 메서드를 사용하고 1을 뺄 수 있습니다 .

String TEST_STRING = "abcdef";

StringUtils.substring(TEST_STRING, 0, TEST_STRING.length() - 1);

그러나이 작업은 다시 null로부터 안전하지 않습니다. 그래도 문자열로작동 합니다.

4. StringUtils.chop () 사용

StringUtils 클래스는 모든 가장자리 시나리오에서 잘 작동 하는 chop () 메서드를 제공합니다 : empty 및 null Strings .

사용하기 매우 쉽고 하나의 매개 변수 인 문자열 만 필요합니다 . 유일한 목적은 마지막 문자를 제거하는 것입니다. 그 이상도 그 이하도 아닙니다.

StringUtils.chop(TEST_STRING);

5. 정규 표현식 사용

정규식을 잘 사용 하여 문자열 에서 마지막 문자 (또는 랜덤의 수의 문자)를 제거 할 수도 있습니다 .

예를 들어, String 클래스 자체replaceAll () 메서드를 사용할 수 있습니다.이 메서드는 정규 표현식과 대체 String의 두 매개 변수를 사용합니다 .

TEST_STRING.replaceAll(".$", "");

String 에 대한 메서드를 호출하기 때문에 작업은 물론 null-safe가 아닙니다 .

또한 replaceAll () 및 regex 표현식은 첫눈에 복잡 할 수 있습니다. 여기 에서 정규식에 대해 자세히 읽을 수 있지만 로직을 좀 더 사용자 친화적으로 만들기 위해 도우미 클래스로 래핑 할 수 있습니다.

public static String removeLastCharRegex(String s) {
    return (s == null) ? null : s.replaceAll(".$", "");
}

문자열 이 개행으로 끝나는 경우 위의 메서드는 "." 로 실패합니다 . 정규식에서 줄 종결자를 제외한 모든 문자와 일치합니다.

마지막으로 Java 8로 구현을 다시 작성해 보겠습니다 .

public static String removeLastCharRegexOptional(String s) {
    return Optional.ofNullable(s)
      .map(str -> str.replaceAll(".$", ""))
      .orElse(s);
}

6. 결론

이 짧은 기사에서는 문자열 의 마지막 문자 만 제거하는 다양한 방법에 대해 설명했습니다. 일부는 설명서, 일부는 바로 사용할 수 있습니다.

그리고 더 많은 유연성이 필요하고 더 많은 문자를 제거해야하는 경우 정규 표현식을 사용하여 더 고급 솔루션을 사용할 수 있습니다.

항상 그렇듯이 기사 전체에서 사용 된 코드 는 GitHub 에서 찾을 수 있습니다 .