在C#中格式化属性

时间:2017-04-05 16:42:54

标签: c# class properties

我目前正在攻读考试,而我正在尝试编写一个类,我看到了这个属性的要求。我需要在名为User的类中编写这个属性。

  

电话 - 必须采用“+ [country_code] / [phone]”格式   [country_code]介于1到3位之间,[phone]介于8之间   和10位数。

     
      
  • 有效手机:+123 / 8888888,+ 1/1234579284

  •   
  • 手机无效:-123 / 8888888,+ 123/4 5 4444444,+ 123348585313,   123 \ 34553363587

  •   

我是否使用[RegularExpression()]中的ComponentModel.DataAnnotations或其他内容?

2 个答案:

答案 0 :(得分:0)

我认为这段代码符合您的要求:

def getGeoInfo(name):
url = ('https://maps.googleapis.com/maps/api/geocode/json?address=%s,+PA'%name)
response = requests.get(url)
geoInfo = response.json()

答案 1 :(得分:0)

您可以在Phone属性的setter中使用正则表达式。

^\+\d{1,3}\/\d{8,10}$

打破这个局面:

  • ^:仅在字符串的开头匹配。
  • \+:匹配+,这需要转义。
  • \d{1,3}:匹配任意数字(0-9)1至3次。
  • \/:匹配/,这需要转义。
  • \d{8,10}:匹配任意数字(0-9)8至10次。
  • $:仅匹配字符串的结尾。

示例代码:

private static Regex phoneRegex = new Regex(@"^\+\d{1,3}\/\d{8,10}$", RegexOptions.Compiled);

private string phone;
public string Phone {
    get { return phone; }
    set {
        Match match = phoneRegex.Match(value);
        if (match.Success) {
            phone = value;
        } else {
            throw new ArgumentException("value");
        }
    }
}