1. 개요
이 빠른 기사에서는 문자열 의 마지막 문자를 제거하는 다양한 기술을 확인하고 논의 할 것 입니다.
2. String.substring () 사용
가장 쉬운 방법은 String 클래스 의 내장 substring () 메서드 를 사용하는 것 입니다.
주어진 문자열 의 마지막 문자를 제거 하려면 두 개의 매개 변수를 사용해야 합니다. 시작 색인으로 0 과 두 번째 문자의 색인입니다. String 의 length () 메서드 를 호출 하고 결과에서 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 에서 찾을 수 있습니다 .