신규 아이디 추천

HJ Kwon·2021년 12월 17일
0
  • 아직 사내 시험에 종속되어 있어 Regex를 떠올리지 못했다.
  • Regex 이용을 배웠다.
  • Kotlin에서는 범위를 .. 으로 처리하는 편리함.
class Solution {
    fun solution(new_id: String): String {
        var answer = new_id

        val reg1 = Regex("[a-z0-9-_.]") //소문자 a-z, 0-9숫자, -_. 특수기호의 존재
        val reg2 = Regex("[.]{2,}") // . 특수기호가 2회이상 연속적으로 나오는지 확인하는 정규식

        answer = answer.toLowerCase()
        var temp = StringBuilder()

        for (i in answer.indices) {
            if (reg1.containsMatchIn(answer[i].toString())) {
                temp.append(answer[i])
            }
        }

        answer = temp.toString()

        answer = answer.replace(reg2, ".")

        if (answer.isNotEmpty() && answer.first() == '.') answer = answer.removeRange(0, 1)
        if (answer.isNotEmpty() && answer.last() == '.') answer = answer.removeRange(answer.length - 1, answer.length)

        if (answer.isEmpty()) answer = "a"

        if (answer.length >= 16) {
            answer = answer.substring(0..14)
            if (answer.last() == '.') {
                answer = answer.removeRange(answer.length - 1, answer.length)
            }
        }

        while (answer.length <= 2) {
            answer = answer.plus(answer[answer.length - 1])
        }
        
        return answer
    }
}

0개의 댓글