-1

フォーマットできるさまざまな方法を考慮して、エンドユーザーから電話番号の入力を取得し、より標準化された方法で再フォーマットする方法を探しています。私のエンド ユーザーは、米国の電話番号のみを使用しています。Google の LibPhoneNumber の C# ポートを見ると、まさにこのタスクのために作成されたものだと思いますが、その使用法はわかりません。

私の出力の目標は、999-999-9999 形式で標準化することです。

したがって、ユーザーが (516)666-1234 と入力した場合、516-666-1234 を出力したいと考えています。

ユーザーが 5166661234 を入力した場合、516-666-1234 を出力したいと思います。

可能であれば、ユーザーが (516)666-1234x102 を入力した場合、出力を 516-666-1234x102 にしたいと思います

ライブラリが拡張機能を処理できない場合は、その問題を外部で処理します。

目的の出力を生成するには、どのような呼び出しを行う必要がありますか?

あるいは、私の質問への回答を提供するリンクを提供できますか?

4

1 に答える 1

3

RegEx (数値以外のフィールドを文字列化するため) と文字列の書式設定を組み合わせる必要があります。string.Format数字は扱いにくいので、10 桁の電話番号をフォーマットしてから内線番号を追加します。

public string getPhoneNumber(string phone) {
   string result = System.Text.RegularExpressions.Regex.Replace(phone, @"[^0-9]+", string.Empty);
   if (result.Length <= 10) {
       return Double.Parse(result).ToString("###-###-####");
   } else {
       return Double.Parse(result.Substring(0,10)).ToString("###-###-####") + 
       "x " + result.Substring(10, result.Length-10);
   }
}

これを正しく行うには、数字の先頭にある「1」をチェックして、それを捨てたいと思います。10文字未満であることを確認し、市外局番などについていくつかの仮定を立てたいと思います.

しかし、これは良いスタートです。

于 2016-01-19T00:03:46.020 に答える