Prologue
코틀린에서 제공되는 isEmpty, isNotEmpty, isBlank, isNotBlank, isNullOrBlank, isNullOrEmpty 함수의 차이점을 알아보려고 한다.
비교를 위해 사용할 문자열은 다음과 같다.
1 2 3 4 5 6 val emptyString = "" val blankString = " " val blankNewLineString = " \n" val withBlankString = " victory" val nullString: String? = null val standardString = "standard"
isEmpty
CharSequence가 아무 값도 포함하고 있지 않을 때, true를 반환한다.
결과는 다음과 같다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 println(emptyString.isEmpty()) println(blankString.isEmpty()) println(blankNewLineString.isEmpty()) println(withBlankString.isEmpty()) println(nullString?.isEmpty()) println(standardString.isEmpty()) true false false false null false
isNotEmpty
CharSequence가 어떠한 값을 포함하고 있을 때(공백 포함), true를 반환한다.
결과는 다음과 같다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 println(emptyString.isNotEmpty()) println(blankString.isNotEmpty()) println(blankNewLineString.isNotEmpty()) println(withBlankString.isNotEmpty()) println(nullString?.isNotEmpty()) println(standardString.isNotEmpty()) false true true true null true
isBlank
CharSequence가 공백만을 가지고 있을 경우나 empty일 경우, true를 반환한다.
결과는 다음과 같다.
공백+개행문자 -> 공백으로 판단한다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 println(emptyString.isBlank()) println(blankString.isBlank()) println(blankNewLineString.isBlank()) println(withBlankString.isBlank()) println(nullString?.isBlank()) println(standardString.isBlank()) true true true false null false
isNotBlank
CharSequence가 empty 상황이 아니고, 값에 공백만 있지 않을 때 true를 반환한다.
즉, 아무 값도 없거나 공백만 있을 때는 false를 반환한다.
결과는 다음과 같다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 println(emptyString.isNotBlank()) println(blankString.isNotBlank()) println(blankNewLineString.isNotBlank()) println(withBlankString.isNotBlank()) println(nullString?.isNotBlank()) println(standardString.isNotBlank()) false false false true null true
isNullOrEmpty
CharSequence가 비어있거나 null일 경우, true를 반환한다.
공백은 비어있는게 아니다. 그래서 false를 반환한다.
결과는 다음과 같다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 println(emptyString.isNullOrEmpty()) println(blankString.isNullOrEmpty()) println(blankNewLineString.isNullOrEmpty()) println(withBlankString.isNullOrEmpty()) println(nullString.isNullOrEmpty()) println(standardString.isNullOrEmpty()) true false false false true false
isNullOrBlank
CharSequence가 null이거나 blank인 상황일 때, true를 반환한다.
공백+개행 -> 비어있음(blank 상태)
결과는 다음과 같다.
1 2 3 4 5 6 7 8 true true true false true false
Summary
어려운 내용은 아니지만, 헷갈리는 함수들이다. 그래서 사용할 때 자주 헷갈려서 정리를 했다. 주의해야 할 점은 다음과 같다.
empty : 정말 아무 값도 가지지 않는 것을 말한다.
blank : 공백만 있거나 정말 아무 값도 가지지 않는 것을 의미한다.
공백+개행문자도 공백으로 판단
blank가 더 큰 개념.
Reference