이해를 돕기 위해 예시를 스토리 형식으로 작성하였습니다
코테를 풀던 도중에 빈 문자열을 확인해서 지워야하는데 둘 다 적용되길래
무슨 차이인지 궁금해서 찾아봤다
val str = "11x + 5 + 6"
str.toList()
여기에 str 변수가 있다. 이걸 list로 바꿨을 땐
이렇게 나오게 된다 . .
내가 처음에 생각한 List로 변환의 결과는 [12, x, 5]
이여야 되는데 말이다
그래서 무작정 split함수를 사용을 했다
str.split(" ")
의 결과는
공백도 사라졌고 전보다는 좋아졌다
계산을 쉽게 하기 위해 ( 문제에는 덧셈밖에 없음 )
+연산자를 공백으로 변환 후 공백을 제거해보기로 했다
str.replace("+"," ").split(" ")
빈칸이 있는 것을 제외하면 조금 더 보기 편해졌다
그래서 빈칸의 유무를 확인하기 위해 사용되는 함수가
isEmpty / isBlank 이다
str.replace("+","").split(" ").filter { it.isNotEmpty() }
현재 여기에서는 isNotEmpty 와 isNotBlank 는 같게 작용한다
그 이유는
isEmpty
특정 문자열이 ""인지 아닌지를 확인한다
isBlank
특정 문자열이 비어 있거나, 또는 공백으로만 이루어져 있는지를 확인한다
보통 list로 만들 때 split(" ")
을 적용해서 만드는데
split 함수란, 특정 문자를 기준으로 문자열을 분리하여서 list에 넣기때문에
원래 자리를 차지하고 있던 곳은 비여있다는 것을 알 수 있다
-> 그래서 isEmpty와 isBlank를 둘 다 사용 가능 하다
val s1 = ""
val s2 = " "
isBlank
가 조금더 범용성 많아 보임ㅎㅎ;