2016-01-18 72 views
-2

我正在尋找一種方法來接聽電話號碼來自最終用戶的輸入,考慮到可以格式化的各種方式,並以更加標準化的方式重新格式化它。我的最終用戶只使用美國的電話號碼。看看谷歌的LibPhoneNumber的C#端口,我認爲這是完成這項任務,但我無法弄清楚它的用法。以999-999-9999格式格式化非結構化電話號碼#輸入

我的輸出目標是標準化爲999-999-9999格式。

所以如果用戶輸入(516)666-1234,我想輸出516-666-1234。

如果用戶輸入5166661234,我想輸出516-666-1234。

如果可能的話,如果用戶輸入(516)666-1234x102,我想輸出是516-666-1234x102

如果庫不能處理的擴展,我會處理與外部問題。

爲了產生所需的輸出,我必須做些什麼?

另外,你能提供一個鏈接,提供我的問題的答案?

+3

發佈的所有內容都是程序說明。但是,我們需要您[提出問題](http://stackoverflow.com/help/how-to-ask)。我們無法確定您想從我們這裏得到什麼。請[編輯]您的帖子以包含我們可以回答的有效問題。提醒:請確保你知道[這裏的主題是什麼](http://stackoverflow.com/help/on-topic),要求我們爲你編寫程序,而且建議不在話下。 – gunr2171

+0

由於蹩腳的問題格式,蹩腳的快速方法來解決這個問題。格式化字符串爲了刪除第一個和第五個字符,並在第四個位置,添加一個破折號。使用子字符串。敲開自己 –

回答

3

你必須結合正則表達式(串出非數字字段)和字符串格式。請注意0​​的一個數字是非常棘手的,所以我們格式的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個字符,並對區號等做一些假設。

但是 - 這是一個好的開始。

+1

回答這個問題比挑選OP更容易。很多道具給你。 – nicomp