[프로그래머스] 신규 아이디 추천 - Java, 자바

Kim Ji Eun·2022년 3월 21일
0

난이도

레벨 1

문제

https://programmers.co.kr/learn/courses/30/lessons/72410

풀이

이 문제는 문자열 문제이다.

replaceAll으로 정규식을 이용해 풀어야했다.

정규식을 검색해서 풀었지만 안보고 정규식을 직접 써서 풀어야했다면 어려웠을 것 같다.
정규식 사용법을 미리 익혀두자!

  • string.toLowerCase(); // 소문자로 변환
  • string.toUpperCase(); // 대문자로 변환
  • string.replaceAll("[^-_.a-z0-9]", ""); // -, _, ., a~z, 0~9 제외한 나머지 지우기 (정규식의 ^a a를 제외한 문자라는 표시)
  • string.replaceAll("[.]{2,}", "."); // .이 2개 이상일 경우 .으로 바꾸기
  • string.replaceAll("^[.]|[.]$", ""); // .으로 시작, .으로 끝나는 문자 지우기

코드



class Solution {
    public String solution(String new_id) {
        String answer = "";

        answer = new_id.toLowerCase();

        answer = answer.replaceAll("[^-_.a-z0-9]",""); // 2단계

        answer = answer.replaceAll("[.]{2,}","."); //3단계

        answer = answer.replaceAll("^[.]|[.]$",""); // 4단계


        if(answer.equals("")){
            answer+="a";
        }
        if(answer.length()>=16){
            answer = answer.substring(0,15);
            answer = answer.replaceAll("[.]$","");
        }
        if(answer.length()<=2){
            while(answer.length()<3){
                answer+=answer.charAt(answer.length()-1);
            }
        }

        return answer;
    }
}

https://velog.io/@minji/Java-%EC%A0%95%EA%B7%9C%ED%91%9C%ED%98%84%EC%8B%9DString.replaceAll-%EB%A9%94%EC%84%9C%EB%93%9C%EB%A5%BC-%EC%9D%B4%EC%9A%A9%ED%95%9C-%EC%B9%98%ED%99%98
https://regexr.com/
https://pink-rabbit.tistory.com/9

profile
Back-End Developer

0개의 댓글