StringUtils 소개
StringUtils는 가장 많이 사용되는 Apache Commons 클래스입니다. 여기에는 개발자가 표준 작업을 작성하거나 다루기 힘든 기본 작업 코드를 작성하지 않도록 도와주는 다양한 유틸리티와 메서드가 포함되어 있습니다.
StringUtils 클래스 의 많은 메소드에는 java.lang.String 과 동등한 메소드가 있지만 java.lang.String 메소드 와 달리 널 안전합니다. 이는 가장 예상치 못한 순간에 NullPointerException이 발생하지 않는다는 것을 의미합니다 .
Apache Commons에는 여러 메서드가 포함되어 있으며 가장 일반적으로 사용되는 일부를 살펴보겠습니다.
StringUtils 메서드 목록:
비었다() | 문자열이 비어 있는지 확인 |
같음() | 문자열 비교 |
비교하다() | 문자열 비교 |
indexOf() | 문자열에서 하위 문자열 찾기 |
lastIndexOf() | 문자열에서 하위 문자열 찾기 |
포함() | 하위 문자열이 문자열에 있는지 확인 |
포함IgnoreCase() | 대소문자를 무시하고 문자열에서 하위 문자열의 발생을 확인합니다. |
포함() | 하위 문자열이 문자열의 어디에서나 발생하는지 확인합니다. |
포함없음() | 하위 문자열이 문자열의 어디에서나 발생하는지 확인합니다. |
포함만() | 하위 문자열이 문자열에 있는지 확인 |
하위 문자열() | 하위 문자열 얻기 |
나뉘다() | 문자열을 하위 문자열로 분할 |
가입하다() | 하위 문자열 연결 |
제거하다() | 하위 문자열 제거 |
바꾸다() | 하위 문자열 바꾸기 |
countMatches() | 일치 수 계산 |
StringUtils.isEmpty() 및 StringUtils.isBlank()
두 방법 모두 문자열에 텍스트가 포함되어 있는지 확인하는 데 사용됩니다. 문자열이 실제로 비어 있으면 true를 반환합니다. 또한 isBlank()는 문자열에 공백만 포함된 경우 에도 true를 반환합니다 .
또한 isNotEmpty() 및 isNotBlank() 와 같은 자체 역 메서드도 있습니다 .
isBlank() 뿐만 아니라 java.lang.String.isEmpty() 대응 항목 과 함께 isEmpty()를 사용하는 방법을 살펴보겠습니다 .
String nullValue = null;
String emptyValue = "";
String blankValue = "\n \t \n";
if(StringUtils.isEmpty(emptyValue)) {
System.out.println("emptyValue is emptyValue");
}
if(StringUtils.isBlank(blankValue)) {
System.out.println("blankValue is blankValue");
}
if(!nullValue.isEmpty()) {
System.out.println("nullString isn't null");
}
여기에 String 유형의 세 가지 변수가 있습니다 . 하나는 null 을 가리키고 , 두 번째는 null 이 아니지만 내용이 없고(빈 문자열), 세 번째는 비어 있지 않지만 빈 결과를 인쇄합니다.
이 코드를 실행하면 다음이 발생합니다.
emptyValue is emptyValue
blankValue is blankValue
Exception in thread "main" java.lang.NullPointerException
java.lang.String 에 내장된 isEmpty() 메서드는 null 안전 하지 않습니다 . null 참조 에서 메서드를 호출하기 때문에 비어 있는지 확인하려고 하면 NullPointerException을 쉽게 얻을 수 있습니다 . 참조가 null인지 미리 확인해야 합니다.
String nullValue = null;
String emptyValue = "";
String blankValue = "\n \t \n";
if(StringUtils.isEmpty(emptyValue)) {
System.out.println("emptyValue is emptyValue");
}
if(StringUtils.isBlank(blankValue)) {
System.out.println("blankValue is blankValue");
}
if(nullValue != null && !nullValue.isEmpty()) {
System.out.println("nullString isn't null");
}
이제 결과는 다음과 같습니다.
emptyValue is emptyValue
blankValue is blankValue
그리고 이러한 방법을 테스트하면nullString:
String nullValue = null;
if(StringUtils.isEmpty(nullValue)) {
System.out.println("nullValue is emptyValue");
}
if(StringUtils.isBlank(nullValue)) {
System.out.println("nullValue is blankValue");
}
그런 다음 다음을 얻습니다.
nullValue is emptyValue
nullValue is blankValue
StringUtils 메서드는 null이 안전 하며 null이 전달되더라도 예상된 결과를 생성합니다 .
StringUtils.equals()
이 메서드는 두 문자열을 비교하고 동일하거나 두 참조가 모두 null 을 가리키는 경우 true를 반환 하지만 이 메서드는 대소문자를 구분한다는 점에 유의하세요.
작동 방식을 살펴보겠습니다.
System.out.println(StringUtils.equals(null, null));
System.out.println(StringUtils.equals(null, "some information"));
System.out.println(StringUtils.equals("some information", null));
System.out.println(StringUtils.equals("some information", "some information"));
System.out.println(StringUtils.equals("some additional information", "some information"));
결과:
true
false
false
true
false
StringUtils 의 equals() 메소드를 java.lang.String.equals() 와 비교하려면 다음 을 수행하십시오 .
String nullValue = null;
System.out.println(StringUtils.equals(nullValue, null));
System.out.println(StringUtils.equals(nullValue, "some information"));
System.out.println(nullValue.equals(null));
System.out.println(nullValue.equals("some information"));
이렇게 하면 다음으로 돌아갑니다.
true
false
Exception in thread "main" java.lang.NullPointerException
다시 말하지만 null 참조에서 메서드를 호출하면 NullPointerException 이 발생 하므로 참조 변수를 사용하기 전에 null 인지 확인해야 합니다 .
StringUtils.비교()
이 메서드의 선언은 다음과 같습니다.
public static int compare(final String str1, final String str2)
이 메소드는 java.lang.String.compareTo() 메소드가 수행하는 것처럼 두 문자열을 사전식으로 비교하여 다음을 리턴합니다.
- str1이 str2와 같거나 둘 다 null인 경우 0
- str1이 str2보다 작으면 값은 0보다 작습니다.
- str1이 str2보다 크면 0보다 큰 값
사전순은 사전순입니다. 프로그램에서 이것을 어떻게 사용할 수 있는지 봅시다:
System.out.println(StringUtils.compare(null, null));
System.out.println(StringUtils.compare(null , "codeGym"));
System.out.println(StringUtils.compare("codeGym", null));
System.out.println(StringUtils.compare("codeGym", "CODEGYM"));
System.out.println(StringUtils.compare("codeGym", "codeGym"));
우리는 다음을 얻습니다.
0
-1
1
32
0
참고: null 값은 null 이 아닌 값보다 작은 것으로 간주됩니다 . 두 개의 null 값은 동일한 것으로 간주됩니다.
문자열에 다른 하위 문자열이 포함되어 있는지 확인
이를 위해 StringUtils 에는 5가지 방법이 있습니다.
- 포함()
- 포함IgnoreCase()
- 포함()
- 포함없음()
- 포함만()
contains() 메서드는 검색 시퀀스가 다른 시퀀스에 포함되어 있는지 여부에 따라 true 또는 false를 반환합니다 .
이러한 메서드에 null 이 전달 되면 false를 반환합니다 . null 이 아닌 값이 전달되면 메소드는 단순히 전달된 객체에서 java.lang.String.indexOf(String str)를 호출합니다.
예:
String value = "CodeGym is cool";
System.out.println(StringUtils.contains(null, "a"));
System.out.println(StringUtils.contains(value, "CodeGym"));
System.out.println(StringUtils.contains(value, "C++"));
System.out.println(StringUtils.contains(value, "codegym"));
메서드는 대소문자를 구분하므로 마지막 호출도 false를 반환합니다 .
false
true
false
false
containsAny() 메서드는 첫 번째 인수로 전달된 문자열이 2-N 인수로 전달된 하위 문자열 중 하나 이상을 포함하는 경우 true를 반환합니다 .
예:
String value = "CodeGym is cool";
System.out.println(StringUtils.containsAny(value, "cool", "c00l", "bro", "hello"));
다음을 표시합니다.
true
이 방법도 대소문자를 구분합니다.
containsNone() 메서드
특정 문자열이 목록의 어떤 것도 포함하지 않는지 확인해야 하는 경우 containsNone() 메서드를 사용할 수 있습니다 . 첫 번째 매개변수는 문자열이고 다음 매개변수는 대상 싱크에 있으면 안 되는 문자열입니다.
예:
String s = "CodeGym is cool";
System.out.println(StringUtils.containsNone(s, 'g', 'a'));
콘솔 출력:
false
하위 문자열 작업
하위 문자열로 작업하는 것은 String 클래스 의 메서드로 작업하는 것과 유사합니다 .
substring(String str, int start)
substring (String str, int start, int end)
이러한 메서드는 문자열 str 에서 하위 문자열을 반환합니다 . 문자열은 두 개의 인덱스로 제공됩니다: start 및 end . Java에서 평소와 같이 범위의 마지막 문자는 end-1 입니다 . 이러한 방법의 장점은 무엇입니까?
이러한 메서드에 null을 전달하면 예외를 throw하는 대신 단순히 null을 반환합니다 . 이러한 메서드는 음수 인덱스 값을 지원합니다. 이 경우 문자열은 폐쇄 루프로 간주됩니다. 마지막 문자 다음에 첫 번째 문자가 오는 식입니다.
어떻게 사용할 수 있는지 봅시다:
System.out.println(StringUtils.substring("lets java", 2, 6));
System.out.println(StringUtils.substring("lets java", -8));
System.out.println(StringUtils.substring(null, 3));
위의 코드를 실행하면 다음이 제공됩니다.
ts j
ets java
null
StringUtils.split()
특수 구분 문자를 사용하여 문자열을 하위 문자열로 분할할 수 있는 방법입니다. 대상 문자열에 하나가 있는 경우 메서드는 하위 문자열의 배열을 반환합니다. 문자가 없으면 빈 배열이 반환됩니다. 음, null 이 메서드에 전달되면 null 을 반환합니다 . 이 코드와 메서드 작동 방식을 살펴보겠습니다.
String myData = "Address, City, State, Zip, Phone, Email, Password";
System.out.println(Arrays.toString(StringUtils.split(myData, ',')));
System.out.println(Arrays.toString(StringUtils.split(null, '.')));
System.out.println(Arrays.toString(StringUtils.split("", '.')));
결과:
[Address, City, State, Zip, Phone, Email, Password]
null
[]
StringUtils.join()
join() 메서드를 사용하면 문자열 배열을 단일 문자열로 연결할 수 있습니다. 동시에 결과 문자열의 하위 문자열 사이에 추가되는 특수 구분 문자를 전달할 수 있습니다. 그리고 메서드에 null 이 전달되면 null을 반환합니다 .
이 방법은 split() 방법 과 정반대입니다 . 이 간단한 예를 살펴보겠습니다.
String myData = "Address, City, State, Zip, Phone, Email, Password";
String[] myString = StringUtils.split(myData, ',');
System.out.println(StringUtils.join(myString, '-'));
위의 코드를 실행하면 다음이 제공됩니다.
Address- City- State- Zip- Phone- Email- Password
StringUtils.replace()
문자열 내에서 문자열을 검색하고, 존재하는 경우 찾아서 해당 문자열과 일치하는 모든 항목을 새 문자열로 바꿉니다.
이 메서드의 선언은 다음과 같습니다.
public static String replace(final String text, final String searchString, final String replacement)
텍스트에서 검색 문자열을 찾을 수 없으면 아무 일도 일어나지 않으며 텍스트는 동일하게 유지됩니다. 동일한 논리에 따라 텍스트가 null 이면 이 메서드는 null 을 반환합니다 . null 문자열을 찾거나 하위 문자열을 null 로 바꾸는 경우 메서드는 원래 문자열을 반환합니다.
이 방법을 시도해 봅시다:
String value = "CodeGym is the best";
System.out.println(StringUtils.replace(value, "best", "cool"));
결과:
CodeGym is the cool
GO TO FULL VERSION