반응형

위로 프로젝트를 진행하는 도중 좋아요를 눌렀는지 여부를 판단하기 위해 좋아요 클릭한 사람의 리스트를 만드는 과정이었습니다.

파이어베이스에서 리스트를 받아오는데 리스트가 아니라 문자열 형태로 받아와져서 문제가 생겼습니다.

예를 들자면 [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] 로 반환이 됩니다.

반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기