J'ai des enregistrements de base de données sous la forme de 10 chaînes longues de caractère, telles que 4085551234.
Je souhaite les formater dans ce format: (408) 555-1234.
Je pense que ceci est lié à la regex. Je suis nouveau à la programmation et à la programmation totalement autodidacte ici, de sorte que tout type de ressource relatif à l'exécution du traitement de texte serait également apprécié. Merci!
Une regex est définitivement surchargée pour celui-ci. Si vous vouliez prendre un "numéro de téléphone" et la normaliser à 10 chiffres, ce serait une bonne utilisation pour une regex. Pour faire ce que vous demandez, faites simplement quelque chose comme:
echo '('.substr($data, 0, 3).') '.substr($data, 3, 3).'-'.substr($data,6);
Comme vous savez déjà comment diviser vos données, vous pouvez simplement utiliser des substrateurs ou quelque chose de similaire pour saisir les pièces que vous souhaitez. Regex est utile pour faire correspondre des chaînes qui n'ont pas toujours un format strict. (Comme des nombres variables d'espaces, des trucs variables avant ou après, des tirets supplémentaires, etc.). Mais dans votre cas, l'entrée est toujours strictement formatée de 10 chiffres, rien d'autre, vous n'avez donc pas besoin de surcharge supplémentaire d'une regex pour le formater.
Jetez un oeil ici: Numéro de téléphone format
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;
}
J'irais probablement avec
$num = "4085551234"; // given
$formatted = "(".substr($num,0,3).") ".substr($num,3,3)."-".substr($num,6);
Regex n'est pas vraiment approprié ici.
Trivialement, vous pourriez faire quelque chose comme:
\(\d\{3\}\)\(\d\{3\}\)\(\d\{4\}\)
Pour correspondre aux 10 chiffres en 3 expressions de sous-groupe, puis imprimez-les à l'aide de chaque sous-groupe:
"(\1) \2-\3
Mais dans la pratique, les données de formulaire libre sont généralement un peu plus difficiles
Je devais faire cette question pour ma classe d'informatique de placement avancé. Java:
Écrivez un programme qui accepte un numéro à 10 chiffres et le formate comme numéro de téléphone.
Ex:
705726552
Sortir:(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);
}
}