Skip to content

Latest commit

 

History

History
84 lines (68 loc) · 2.76 KB

File metadata and controls

84 lines (68 loc) · 2.76 KB

프로그래머스 Level1 : 2021 KAKAO BLIND RECRUITMENT 신규 아이디 추천

import java.util.regex.Pattern;
class Solution {
    public String solution(String new_id) {
        String answer = "";
        
        //1단계
        new_id = new_id.toLowerCase();

        //2단계 
        String pattern = "[^\\w\\.\\-]";
        new_id=new_id.replaceAll(pattern,"");    

        //3단계         
        /*while(new_id.indexOf("..")!=-1)
            new_id=new_id.replaceAll("\\.\\.","\\.");*/               
        new_id=new_id.replaceAll("\\.{2,}","\\.");    

        //4단계
        //new_id = new_id.replaceAll("^\\.","");
        //new_id = new_id.replaceAll("\\.$","");
        new_id = new_id.replaceAll("^\\.||\\.$",""); 

        //5단계 
        if(new_id.equals(""))
            new_id = "a";

        //6단계 
        if(new_id.length()>=16)
            new_id=new_id.substring(0,15);
        new_id = new_id.replaceAll("\\.$","");

        //7단계       
        while(new_id.length()<=2)
            new_id+=new_id.charAt(new_id.length()-1);
            
        answer = new_id;
        return answer;
    }
}

정규표현식

정규표현식 설명
^ 문자열 시작
$ 문자열 종료
. 임의의 한 문자(단 \은 넣을 수 없음)
* 앞 문자가 없을 수도 무한정 많을 수도 있음
+ 앞 문자가 하나 이상
? 앞 문자가 없거나 하나 있음
[ ] 문자의 집합이나 범위를 나타내며 두 문자 사이는 - 기호로 범위를 나타냅니다. [] 내에서 ^ 가 선행하여 존재하면 not을 나타낸다.
{ } 횟수 또는 범위를 나타냅니다.
( ) 소괄호 안의 문자를 하나의 문자로 인식
| 패턴 안에서 or 연산을 수행할 때 사용
\ 정규 표현식 역슬래시()는 확장문자 (역슬래시 다음에 일반 문자가 오면 특수문자로 취급하고 역슬래시 다음에 특수문자가 오면 그 문자 자체를 의미)
\b 단어의 경계
\B 단어가 아닌것에 대한 경계
\A 입력의 시작 부분
\G 이전 매치의 끝
\Z 입력의 끝이지만 종결자가 있는 경우
\z 입력의 끝
\s 공백 문자
\S 공백 문자가 아닌 나머지 문자
\w 알파벳이나 숫자
\W 알파벳이나 숫자를 제외한 문자
\d 숫자 [0-9]와 동일
\D 숫자를 제외한 모든 문자
(?i) 앞 부분에 (?!)라는 옵션을 넣어주게 되면 대소문자는 구분하지 않습니다.



Reference