2014-01-29 202 views
0

我有一個項目,我有一個電話號碼的輸入。所述電話號碼可以來自任何國家。用戶在輸入電話號碼之前選擇了國家。格式化國際電話號碼

當用戶在WPF中輸入電話號碼時,是否有格式化電話號碼的方法?

我玩弄與谷歌的圖書館端口C#,但無濟於事(click here

謝謝!

+2

替代'家庭作業'項目'',然後添加示例,然後解釋它是如何失敗,然後有人可能會幫助:) – gwillie

+0

我想知道是否有人已經這樣做過。我目前沒有值得發佈的代碼。我希望這是作業... – mkamioner

+0

你要求的世界上所有可能的電話號碼格式。沒有一個程序員在那裏正確的思想會試圖覆蓋每一個可能的電話號碼格式:)但你願意,然後建議(對我來說)這是作業!考慮一下,或者更好地重讀你的問題,特別是「所說的電話號碼可以來自任何國家......」聽起來像「世界上每一個電話號碼格式」,不是。我是有幫助的,但有時候人們需要一巴掌,我知道我需要每一個經常;)...如果它已經完成,那麼你會找到答案已經 – gwillie

回答

1

我可以建議您使用兩個屬性,其中屬性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

  • 不是一個嚴重的缺陷,但不執行數字的格式打印完成後的數字。