Как вы форматируете 10-значную строку в номер телефона?

У меня есть записи базы данных в виде строк длиной 10 символов, таких как 4085551234.

Я хочу отформатировать их в таком формате: (408) 555-1234.

Я думаю, что это связано с регулярным выражением. Я новичок в программировании и полностью самоучка здесь, поэтому можно было бы оценить любые ресурсы, связанные с выполнением обработки текста. Благодаря!

Регулярное выражение определенно переполнено для этого. Если вы хотите взять «номер телефона» и нормализовать его до 10 цифр, это будет полезно для регулярного выражения. Чтобы делать то, что вы просите, просто сделайте что-нибудь вроде:

echo '('.substr($data, 0, 3).') '.substr($data, 3, 3).'-'.substr($data,6); 

Поскольку вы уже знаете, как разделить ваши данные, вы можете просто использовать substr или что-то подобное, чтобы захватить нужные вам части. RegEx полезен для соответствия строк, которые не всегда имеют строгий формат. (Подобно переменным числам пробелов, переменным содержимым до или после него, дополнительные тире и т. Д.). Но в вашем случае вход всегда строго отформатирован на 10 цифр, ничего больше, поэтому вам не нужны дополнительные накладные расходы RegEx для его форматирования.

Посмотрите здесь: Формат номера телефона

 function format_phone($phone) { $phone = preg_replace("/^\d/", "", $phone); if(strlen($phone) == 7) return preg_replace("/(\d{3})(\d{4})/", "$1-$2", $phone); elseif(strlen($phone) == 10) return preg_replace("/(\d{3})(\d{3})(\d{4})/", "($1) $2-$3", $phone); else return $phone; } 

Я, вероятно,

 $num = "4085551234"; // given $formatted = "(".substr($num,0,3).") ".substr($num,3,3)."-".substr($num,6); 

Regex здесь не подходит.

Тривиально вы могли бы сделать что-то вроде:

 \(\d\{3\}\)\(\d\{3\}\)\(\d\{4\}\) 

Чтобы сопоставить 10 цифр с тремя выражениями подгрупп, а затем распечатать их с помощью каждой подгруппы:

 "(\1) \2-\3 

Но на практике данные свободной формы обычно немного сложнее

Я должен был сделать этот вопрос для моего современного класса компьютерных наук. Ява:

Напишите программу, которая принимает 10 цифр # и форматирует ее как номер телефона.

Пример: 705726552
Выход: ( (705)726-2552

 import java.util.Scanner; public class TelNumCorrection{ public static void main(String[]args){ Scanner scan = new Scanner(System.in); System.out.println("Please enter a 10 digit number"); String num=scan.nextLine(); String a=num.substring(0,3); String b=num.substring(3,6); String c=num.substring(6); System.out.println("("+a+ ")"+b+"-"+c); } }