4085551234 のような 10 文字の長い文字列の形式のデータベース レコードがあります。
これらを次の形式にフォーマットしたい: (408) 555-1234.
これは正規表現に関連していると思います。私はプログラミングが初めてで、ここでは完全に独学なので、テキスト処理の実行に関連するあらゆる種類のリソースも同様に高く評価されます. ありがとう!
4085551234 のような 10 文字の長い文字列の形式のデータベース レコードがあります。
これらを次の形式にフォーマットしたい: (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);
ここでは、正規表現はあまり適切ではありません。
自明なことに、次のようなことができます:
\(\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);
}
}