위로 프로젝트를 진행하는 도중 좋아요를 눌렀는지 여부를 판단하기 위해 좋아요 클릭한 사람의 리스트를 만드는 과정이었습니다.
파이어베이스에서 리스트를 받아오는데 리스트가 아니라 문자열 형태로 받아와져서 문제가 생겼습니다.
예를 들자면 [123, 456, 789] 형식으로 데이터를 불러오는데 이게 123, 456, 789라는 원소를 가진 리스트 형태가 아니라 [ ] 괄호를 포함한 문자열 그대로를 받게되었습니다. ex) "[123, 456, 789]" 이런식
딱 이 상황을 보니 2021 KAKAO BLIND RECRUITMENT 의 1번 문제가 생각났습니다. 예전에 풀었던 문제인데 저는 단순 조건, 반복문을 이용하여 꽤 복잡하게 구현해서 문제를 풀었지만 정규표현식으로 숏코딩하신 분들을 보고 충격을 먹었던 기억이 납니다...
정규표현식은 사용하지 않았지만 코틀린에서 split, replace, trim 함수를 사용하여 간단하게 구현해보았습니다.
코드
fun toList(string: String) : MutableList<String>{
string.replace(" ","")
var mutableList = mutableListOf<String>()
// 괄호 제거 , split으로 나누기
string
.replace("[","")
.replace("]","")
.split(",")
.forEach{
mutableList.add(it.trim())
}
return mutableList
}
string이라는 문자열을 받으면 가장 먼저 replace 함수를 이용하여 공백을 지워줍니다. -> replace(" ", "")
첫번째 인자(" ")를 두번째 인자("")로 바꿔줍니다. 공백을 지울 때 위와같이 많이 사용합니다.
그 후 공백이 지워진 string에서 마찬가지로 replace를 이용하여 "[", "]" 괄호들을 지워주고 -> replace("[", ""), replace("]", "")
split 함수를 사용하여 ","기준으로 나누어 줍니다. -> split(",")
split 함수는 인자를 기준으로 문자열을 나누어 줍니다.
마지막으로 나누어진 문자들을 forEach문을 사용하여 리스트에 넣어주는데 trim 함수를 사용하여 앞뒤 공백을 지워줍니다.
사실 맨 처음에 replace 함수를 이용하여 모든 공백을 지웠지만 혹시몰라서 trim 함수를 이용하여 한 번 더 지울 수 있도록 하였습니다.
trim 함수는 문자열의 앞, 뒤 공백을 지워주는 함수입니다.
위의 코드에 "[123, 456, 789]" 를 넣으면 [123, 456, 789] 로 반환이 됩니다.
'코틀린[Kotlin]' 카테고리의 다른 글
코틀린[Kotlin] 컬렉션 정리 - 기본편(About the Collections in Kotlin - Basic) (0) | 2022.05.13 |
---|---|
코틀린[Kotlin] 배열, 리스트에서 중복값 제거하기( distinct() ) (0) | 2022.04.27 |
코틀린[Kotlin] 컬렉션 API : filter, map, all, any, count, find(firstOrNull) (0) | 2022.02.21 |
코틀린[Kotlin] 가위바위보하고 결과를 출력해주기 (0) | 2022.02.04 |
코틀린[Kotlin] 람다기초(Lambda) (0) | 2022.01.21 |
최근댓글