조건
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)
String (Java SE 11 & JDK 11 )
Compares two strings lexicographically. The comparison is based on the Unicode value of each character in the strings. The character sequence represented by this String object is compared lexicographically to the character sequence represented by the argum
docs.oracle.com
5. StringBuilder 클래스의 insert 메서드를 이용해 (, ), -가 위치해야 할 인덱스에 각각 삽입했다.
StringBuilder (Java SE 11 & JDK 11 )
Inserts the string into this character sequence. The characters of the String argument are inserted, in order, into this sequence at the indicated offset, moving up any characters originally above that position and increasing the length of this sequence by
docs.oracle.com
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 |