조건
1. 배열의 길이가 8이라면 앞에 010이 있다고 가정한다.
2. (000)0000-0000 형식의 String을 반환한다
int[] arr = {0,1,0,1,2,3,4,5,6,7,8};
int[] arr2 = {1,2,3,4,5,6,7,8};
//위와 같은 배열에 대해 (010)1234-5678 형태의 String을 출력한다
public String createPhoneNumber(int[] arr){
StringBuilder sb = new StringBuilder();
if(arr.length==8) sb.append("010").append(Arrays.toString(arr).replaceAll("\\D", ""));
else sb.append(Arrays.toString(arr).replaceAll("\\D", ""));
sb.insert(0, '(');
sb.insert(4, ')');
sb.insert(9, '-');
return String.valueOf(sb);
}
point
1. 문자열을 더하기 위해 Stringbuilder를 사용했다.
2. 길이가 8이라면 일단 앞에 "010"을 더해준다.
3. Arrays.toString() 메서드를 사용해 먼저 배열을 문자열으로 변환했다.
4. replaceAll 메서드에 정규식을 사용해 0-9에 해당하지 않는다면 ""로 변환했다. (제거)
- 참고) "[^0-9]" 의 표현은 "\\D"와 같다. 인텔리제이한테 강제 변환 당함
- String.replaceAll(String regex, String replacement)
5. StringBuilder 클래스의 insert 메서드를 이용해 (, ), -가 위치해야 할 인덱스에 각각 삽입했다.
6. StringBuilder 타입을 String으로 변환해 반환한다.
못 풀었던 문제들 다시 풀어보기를 시작했다. 아직 수월하다.
'p-languages > java' 카테고리의 다른 글
java/ Integer를 '==' 연산자가 아닌 'equals' 메서드로 비교해야 하는 이유 (Integer Cache) (0) | 2022.11.11 |
---|---|
java/ 배열을 요소로 갖는 리스트에서 배열의 값을 기준으로 오름차순 정렬하기 (0) | 2022.07.23 |
java/ 내부 클래스의 종류와 내부 클래스를 사용함으로써 얻는 장점 (0) | 2022.05.23 |
java/ Stream 중간 처리 메서드 - filtering, mapping, sorting, looping (0) | 2022.05.23 |
java/ String.contains() : 문자열에 특정 부분 문자열이 있는지 확인하는 메서드 (0) | 2022.05.17 |