java изменение формата телефона с помощью String Builder и split - PullRequest
0 голосов
/ 31 января 2020

Я пытаюсь переформатировать строковый телефонный номер в +1(204)867-5309, сначала разбив точки по центру, а затем проверяя, является ли его вход действительным, а если нет, то throw new IllegalArgumentException. Но по какой-то причине вывод числа не меняется, хотя я использовал String Builder, чтобы изменить его. заранее спасибо.

public class format{
    public static void main (String[] args){
        String phone = "204.867.5309"; 
        System.out.println(format(phone));
    }

    public static String format(String phone){
        char [] phoneLine = phone.toCharArray(); 
        String [] split = phone.split("\\."); 

        for (char c: phoneLine){
            if (phoneLine[3]=='.'
            && phoneLine[7]=='.'
            && phoneLine.length == 12 
            && Character.isDigit(phoneLine[1])
            && Character.isDigit(phoneLine[0])
            && Character.isDigit(phoneLine[2])
            && Character.isDigit(phoneLine[4])
            && Character.isDigit(phoneLine[5])
            && Character.isDigit(phoneLine[6])
            && Character.isDigit(phoneLine[8])
            && Character.isDigit(phoneLine[9]))
            {  
                StringBuilder sb = new StringBuilder(phone); 
                sb.append("+1");
                sb.insert(2,"("); 
                sb.insert(6, ")");
                sb.insert(10,"-");
            }
            else {
                throw new IllegalArgumentException("not valid"); 
            }
        }
        return phone; 
    }
}

Ответы [ 2 ]

1 голос
/ 31 января 2020

Можете ли вы попробовать ниже code.output: 20 (48) 67-5309 + 1

public class PhoneNumberFormat {
public static void main(String[] args) {
    String phone = "204.867.5309";
    System.out.println(format(phone));
}

public static String format(String phone) {
    String[] split = phone.split(".");
    split = phone.split("\\.");
    String newPhone = "";
    for (String s : split) {
        newPhone = newPhone + s;

    }
    char[] phoneLine = newPhone.toCharArray();
    StringBuilder sb = new StringBuilder();
    for (char c : phoneLine) {
        if (phoneLine.length == 10
                && Character.isDigit(phoneLine[1])
                && Character.isDigit(phoneLine[0])
                && Character.isDigit(phoneLine[2])
                && Character.isDigit(phoneLine[4])
                && Character.isDigit(phoneLine[5])
                && Character.isDigit(phoneLine[6])
                && Character.isDigit(phoneLine[8])
                && Character.isDigit(phoneLine[9])) {
            sb = new StringBuilder(newPhone);
            sb.append("+1");
            sb.insert(2, "(");
            sb.insert(6, ")");
            sb.insert(10, "-");
        } else {
            throw new IllegalArgumentException("not valid");
        }
    }
    return sb.toString();
}}
0 голосов
/ 31 января 2020

Попробуйте с этим кодом. для l oop и разделения строк не требуется:

public static void main(String[] args) {
    String phone = "204.867.5309";
    System.out.println(format(phone));
}

public static String format(String phone) {
    char[] phoneLine = phone.toCharArray();
    if (phoneLine[3] == '.'
            && phoneLine[7] == '.'
            && phoneLine.length == 12
            && Character.isDigit(phoneLine[1])
            && Character.isDigit(phoneLine[0])
            && Character.isDigit(phoneLine[2])
            && Character.isDigit(phoneLine[4])
            && Character.isDigit(phoneLine[5])
            && Character.isDigit(phoneLine[6])
            && Character.isDigit(phoneLine[8])
            && Character.isDigit(phoneLine[9])) {
        String[] splittedPhone = phone.split("\\.");
        StringBuilder sb = new StringBuilder("+1");
        int i = 0;
        for (String sub : splittedPhone) {
            if (i == 0) {
                sb = sb.append("(");
                sb = sb.append(sub);
                sb = sb.append(")");
            } else if (i == 1) {
                sb = sb.append(sub);
            } else if (i == 2) {
                sb = sb.append("-");
                sb = sb.append(sub);
            }
            i++;
        }
        return sb.toString();
    } else {
        throw new IllegalArgumentException("not valid");
    }
}
...