본문 바로가기

p-languages/java

java/ 8 또는 12 길이의 int 배열을 받아 전화번호 형식의 String으로 반환하기

조건

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으로 변환해 반환한다.

 

못 풀었던 문제들 다시 풀어보기를 시작했다. 아직 수월하다.