CodeGym /행동 /All lectures for KO purposes /Apache Commons의 StringUtils 클래스

Apache Commons의 StringUtils 클래스

All lectures for KO purposes
레벨 1 , 레슨 1054
사용 가능

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

StringUtilsequals() 메소드를 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 에서 하위 문자열을 반환합니다 . 문자열은 두 개의 인덱스로 제공됩니다: startend . 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
코멘트
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION