我在10字符长串的形式的数据库记录,如4085551234.

我希望这些格式化成这种格式:(408)555-1234

我觉得这是正则表达式有关。我是新来编程,完全自学成才这里,所以任何类型的有关执行文本处理资源,将不胜感激也。谢谢!

有帮助吗?

解决方案

一个正则表达式是为这一个肯定矫枉过正。如果你想采取“电话号码”,并将其标准化至10位,那将是一个正则表达式一个良好的使用。要做到你问什么,只是这样做:

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

既然你已经知道如何瓜分你的数据,你可以只使用SUBSTR或类似的抓住你想要的部分东西。正则表达式是字符串匹配这并不总是有严格的格式非常有用。 (像的空间变量的数字,之前或之后,它变的东西,额外破折号等)。但在你的情况下,输入总是严格的格式10位,没有别的,所以你并不需要一个正则表达式的额外开销进行格式化。

其他提示

在这里看看:格式的电话号码

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);

正则表达式是不是真的适当这里。

中平凡,你可以这样做:

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

要匹配10位数字为3倍亚组的表达,然后使用每个子组将它们打印出来:

"(\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);
  }
}
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top