[英]Formatting International Phone Numbers
我有一個項目,我可以輸入電話號碼。 所述電話號碼可以來自任何國家。 用戶在輸入電話號碼之前選擇了國家。
有沒有辦法在用戶在 WPF 中輸入電話號碼時格式化電話號碼?
我正在使用 Google 的 C# 庫端口,但無濟於事(單擊此處)
謝謝!
我可以建議您使用兩個屬性,其中HomeNumber
正則表達式用於格式化數字輸入。
示例(更接近偽代碼):
public string Country
{
get { return country; }
set { country = value; }
}
public string HomeNumber
{
get
{
if (homeNumber == null)
{
return string.Empty;
}
if (country.Equals("USA"))
{
return Regex.Replace(homeNumber, @"(\d{2})(\d{2})(\d{2})", "$1-$2-$3");
}
else if (country.Equals("Russia"))
{
return Regex.Replace(homeNumber, @"(\d{3})(\d{2})(\d{2})", "$1-$2-$3");
}
}
set
{
homeNumber = value;
}
}
如果國家選擇很多,以減少建築的數量If
,我可以建議使用的State
模式。
Advantages
Disadvantages
國際電話號碼的定義一團糟,原因有以下三個:
1)如何撥打國際電話號碼取決於您所在的國家/地區。如果您的應用程序僅在一個國家/地區使用,那么這還不算太糟糕。 但是,可能有多種方法可以獲取國際連接,例如先撥 00 或簡單地撥打 +。
2)電話號碼的國家代碼設計得特別糟糕。 只是一些例子:
1339 美國
1340 維爾京群島(加勒比群島)
1341 美國
1342 未使用
1343 加拿大
美國,加拿大和一些較小的地方共享 1 作為國家代碼,接下來的 3 位數字決定,如果是美國或加拿大或......沒有簡單的方法來找出國家,比如第一個 xxx 是加拿大,其余的我們。
一些國家/地區有 2 位數代碼,其他國家/地區有 3 和 4。
3) 即使在同一個國家,不同地區也可以有不同的格式。
最簡單的解決方案可能是:
當然,您還可以通過格式化一個國家/地區的區號來進一步復雜化。 我無法幫助您解決問題,但其余的您可以在 Github 上找到代碼(太多了,無法在此處發布): github.com/PeterHuberSg/WpfWindowsLib/blob/master/WpfWindowsLib/PhoneTextBox.cs
國際電話號碼和 PhoneTextBox 的詳細解釋在 CodeProject: International Phone Number Validation Explained
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.