Post

Apache Commons Lang 3을 사용한 문자열 처리

1. Apache Commons Lang 3

Apache Commons Lang 3 라이브러리는 자바의 API의 핵심 클래스의 조작에 대한 지원을 제공한다. 이 지원에는 문자열, 숫자, 날짜, 동시성, 개체 반사 등을 처리하는 메서드가 포함된다.

2. Maven Dependency

Commons Lang 3 라이브러리를 사용하려면 다음 종속성을 사용하여 중앙 Maven 저장소에서 가져오기만 하면 된다.

1
2
3
4
5
<dependency>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-lang3</artifactId>
    <version>3.12.0</version>
</dependency>

여기에서 라이브러리의 최신 버전을 찾을 수 있다.

3. StringUtils

StringUtils 클래스는 문자열에 대한 null-safe 작업을 위한 메서드를 제공한다.

이 클래스의 많은 메서드에는 클래스 java.lang.String에 정의된 해당 메서드가 있다. 이것은 null-safe가 아니다. 그러나 String 클래스에 동등한 항목이 없는 여러 메서드에 중점을 둔다.

4. containsAny 메소드

containsAny의 메서드는 주어진 문자열이 주어진 문자 집합의 문자를 포함하고 있는지 확인합니다. 이 문자 집합은 String 또는 char varargs 의 형태로 전달될 수 있다.

다음 코드는 결과 확인과 함께 이 메서드의 두 가지 오버로드된 특성을 사용하는 방법을 보여준다.

1
2
3
4
5
6
7
8
9
10
String string = "baeldung.com";
boolean contained1 = StringUtils.containsAny(string, 'a', 'b', 'c');
boolean contained2 = StringUtils.containsAny(string, 'x', 'y', 'z');
boolean contained3 = StringUtils.containsAny(string, "abc");
boolean contained4 = StringUtils.containsAny(string, "xyz");

assertTrue(contained1);
assertFalse(contained2);
assertTrue(contained3);
assertFalse(contained4);

5. containsIgnoreCase 메소드

containsIgnoreCase 메서드는 지정된 문자열에 대소문자를 구분하지 않는 방식으로 다른 String이 포함되어 있는지 확인합니다.

다음 코드는 대문자와 소문자가 무시될 때 문자열 “baeldung.com”이 “BAELDUNG”로 구성되는지 확인한다.

1
2
3
4
String string = "baeldung.com";
boolean contained = StringUtils.containsIgnoreCase(string, "BAELDUNG");

assertTrue(contained);

6. countMatches 메소드

countMatches 메소드는 주어진 문자열에 문자 또는 하위 문자열이 나타나는 횟수를 계산한다.

다음은 문자열 “welcome to www.baeldung.com” 에서 “w”가 네 번 나타나고 “com”이 두 번 나타나는 것을 확인하는 방법의 데모이다.

1
2
3
4
5
6
String string = "welcome to www.baeldung.com";
int charNum = StringUtils.countMatches(string, 'w');
int stringNum = StringUtils.countMatches(string, "com");

assertEquals(4, charNum);
assertEquals(2, stringNum);

7. Appending과 Prepending 메소드

appendIfMissing 및 appendIfMissingIgnoreCase 메서드는 각각 대소문자를 구분하지 않고 전달된 접미사로 끝나지 않은 경우 주어진 문자열 끝에 접미사를 추가한다.

마찬가지로 prependIfMissing 및 prependIfMissingIgnoreCase 메서드는 전달된 접두사로 시작하지 않으면 주어진 문자열의 시작 부분에 접두사를 추가한다.

다음 예제에서 appendIfMissing 및 prependIfMissing 메소드는 이러한 접미사를 반복하지 않고 문자열 “baeldung.com”에 접미사와 접두사를 추가하는데 사용된다.

1
2
3
4
5
6
String string = "baeldung.com";
String stringWithSuffix = StringUtils.appendIfMissing(string, ".com");
String stringWithPrefix = StringUtils.prependIfMissing(string, "www.");

assertEquals("baeldung.com", stringWithSuffix);
assertEquals("www.baeldung.com", stringWithPrefix);

8. 대소문자 변경 방법

String 클래스는 문자열의 모든 String을 대문자 또는 소문자로 변환하는 메서드를 이미 정의한다. 이 하위 섹션은 swapCase, capitalize 및 uncapitalize와 같은 다른 방법으로 문자열의 대소문자를 변경하는 메소드의 사용만 보여준다.

swapCase 메소드는 문자열의 대소문자를 바꾸어 대문자를 소문자로, 소문자를 대문자로 변경한다.

1
2
3
4
String originalString = "baeldung.COM";
String swappedString = StringUtils.swapCase(originalString);

assertEquals("BAELDUNG.com", swappedString);

capitalize 메소드는 주어진 문자열의 첫 번째 문자를 대문자로 변환하고 나머지 모든 문자는 변경하지 않는다.

1
2
3
4
String originalString = "baeldung";
String capitalizedString = StringUtils.capitalize(originalString);

assertEquals("Baeldung", capitalizedString);

uncapitalize 메소드는 주어진 문자열의 첫 번째 문자를 소문자로 변환하고 나머지 모든 문자는 변경하지 않는다.

1
2
3
4
String originalString = "Baeldung";
String uncapitalizedString = StringUtils.uncapitalize(originalString);

assertEquals("baeldung", uncapitalizedString);

9. Reversing 메소드

StringUtils 클래스는 문자열을 반전하는 두 가지 메서드를 정의합니다.

reverse 메서드는 문자열의 모든 문자를 반대 순서로 재정렬하는 반면 reverseDelimited 메서드는 지정된 구분 기호로 구분된 문자 그룹의 순서를 변경한다.

다음 코드는 “beldung” 문자열을 반전시키고 결과를 검증한다.

1
2
3
4
String originalString = "baeldung";
String reversedString = StringUtils.reverse(originalString);

assertEquals("gnudleab", reversedString);

reverseDelimited 메소드를 사용하면 문자는 개별적으로가 아니라 그룹으로 반전된다.

1
2
3
4
String originalString = "www.baeldung.com";
String reversedString = StringUtils.reverseDelimited(originalString, '.');

assertEquals("com.baeldung.www", reversedString);

10. rotate() 메소드

rotate() 메소드는 순환적으로 문자열의 문자를 여러 위치로 이동한다. 아래의 코드는 문자열 “beldung”의 모든 문자를 오른쪽으로 네 위치 이동하고 결과를 확인한다.

1
2
3
4
String originalString = "baeldung";
String rotatedString = StringUtils.rotate(originalString, 4);

assertEquals("dungbael", rotatedString);

11. difference 메소드

difference 메소드는 두 문자열을 비교하여 첫 번째 문자열과 다른 위치부터 시작하여 두 번째 문자열의 나머지를 반환한다.

다음 코드 조각은 두 개의 문자열 “Baeldung Tutorials”와 “Baeldung Courses”를 비교하여 결과를 확인한다.

1
2
3
4
5
6
7
String tutorials = "Baeldung Tutorials";
String courses = "Baeldung Courses";
String diff1 = StringUtils.difference(tutorials, courses);
String diff2 = StringUtils.difference(courses, tutorials);

assertEquals("Courses", diff1);
assertEquals("Tutorials", diff2);

[출처 및 참고]

This post is licensed under CC BY 4.0 by the author.