格式化国际电话号码

问题描述:

我有一个项目,我有一个电话号码的输入。所述电话号码可以来自任何国家。用户在输入电话号码之前选择了国家。格式化国际电话号码

当用户在WPF中输入电话号码时,是否有格式化电话号码的方法?

我玩弄与谷歌的图书馆端口C#,但无济于事(click here

谢谢!

+2

替代'家庭作业'项目'',然后添加示例,然后解释它是如何失败,然后有人可能会帮助:) – gwillie

+0

我想知道是否有人已经这样做过。我目前没有值得发布的代码。我希望这是作业... – mkamioner

+0

你要求的世界上所有可能的电话号码格式。没有一个程序员在那里正确的思想会试图覆盖每一个可能的电话号码格式:)但你愿意,然后建议(对我来说)这是作业!考虑一下,或者更好地重读你的问题,特别是“所说的电话号码可以来自任何国家......”听起来像“世界上每一个电话号码格式”,不是。我是有帮助的,但有时候人们需要一巴掌,我知道我需要每一个经常;)...如果它已经完成,那么你会找到答案已经 – gwillie

我可以建议您使用两个属性,其中属性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

  • 不是一个严重的缺陷,但不执行数字的格式打印完成后的数字。