[프로그래머스] 신규 아이디 추천(Java)

수경·2022년 12월 12일
0

problem solving

목록 보기
76/174

프로그래머스 - 신규 아이디 추천

풀이

❗️정규표현식

(요약)

정규 표현식설명
^문자열 시작
$문자열 종료
.임의의 한 문자(단 \은 넣을 수 없음)
*앞 문자가 없을 수도 무한정 많을 수도 있음
+앞 문자가 하나 이상
?앞 문자가 없거나 하나 있음
[ ]문자의 집합이나 범위를 나타내며 두 문자 사이는 - 기호로 범위를 나타냅니다. [] 내에서 ^ 가 선행하여 존재하면 not을 나타낸다.
{ }횟수 또는 범위를 나타냅니다.
( )소괄호 안의 문자를 하나의 문자로 인식
^[0-9]*$숫자
^[a-zA-Z]*$영문자
^[가-힣]*$한글
\w+@\w+\.\w+(\.\w+)?E-Mail
^\d{2,3}-\d{3,4}-\d{4}$전화번호
^01(?:01
\d{6} - [1-4]\d{6}주민등록번호
^\d{3}-\d{2}$우편번호

코드

public class NewId {
	public String solution(String new_id) {
		String result = new_id.toLowerCase();
		result = result.replaceAll("[^-_.a-z0-9]", "");
		result = result.replaceAll("[.]+", ".");
		result = result.replaceAll("^[.]|[.]$", "");

		if (result.isEmpty()) result += "a";
		if (result.length() > 15) {
			result = result.substring(0, 15);
			result = result.replaceAll("[.]$", "");
		}
		if (result.length() <= 2) {
			result += String.valueOf(result.charAt(result.length() - 1)).repeat(3 - result.length());
		}
		return result;
	}

	public static void main(String[] args) {
		NewId newId = new NewId();
		System.out.println(newId.solution("...!@BaT#*..y.abcdefghijklm.").equals("bat.y.abcdefghi"));
		System.out.println(newId.solution("z-+.^.").equals("z--"));
		System.out.println(newId.solution("=.=").equals("aaa"));
		System.out.println(newId.solution("123_.def").equals("123_.def"));
		System.out.println(newId.solution("abcdefghijklmn.p").equals("abcdefghijklmn"));
	}
}
profile
어쩌다보니 tmi뿐인 블로그😎

0개의 댓글