【问题标题】:Getting area of a US phone number as a substring mvc [closed]将美国电话号码的区域作为子字符串 mvc [关闭]
【发布时间】:2016-06-30 20:13:19
【问题描述】:

我有一个电话号码:

public string PhoneNumber
{
    get
    {
        return _phoneNumber;
    }
    set
    {
        Regex regexObj = new Regex(@"[^\d]");
        _phoneNumber = regexObj.Replace(value, "");
        _phoneNumber = Regex.Replace(_phoneNumber, @"(\d{3})(\d{3})(\d{4})", "($1) $2-$3");
    }
}
private string _phoneNumber;

如何使public string Areacode 成为PhoneNumber 的子字符串,其中包含前3 位数字(区号)?顺便说一句,我正在使用mvc。提前感谢您的帮助。

【问题讨论】:

  • 您是否保证始终以可解析的特定格式分配电话号码?电话号码可以有几十种不同的格式;这些总是美国的电话号码吗?你有一个样本数据集来运行一些测试吗?
  • 您是在问如何将前三位分配给另一个字符串属性,当有十位数字时,或者当有十一位数字并且第一位数字是 1 时,第二到第四位数字?还是你想认真对待它?
  • 电话号码的长度最多为 10 位(仅限美国号码)@Cory。就数据集而言,使用“1234567891”应该足以满足我的目的。
  • @julianc 好的,继续
  • 只是公共字符串 Areacode{get{return _area}set{_area=_phonenumber.Substring(0,3)}} @EdPlunkett?抱歉,我对这一切都是新手。

标签: c# .net regex substring


【解决方案1】:

如果我正确理解您的问题,如果您只是想在另一处房产中获取区号,可能有几种简单的方法,但这里是其中之一..

public string PhoneNumber
    {
        get
        {
            return _phoneNumber;
        }
        set
        {
            Regex regexObj = new Regex(@"[^\d]");                
            _phoneNumber = regexObj.Replace(value, "");               
            var match = Regex.Match(_phoneNumber,  @"(\d{3})(\d{3})(\d{4})");
            if(match.Success)
            {
                _phoneNumber = string.Format("({0}) {1}-{2}", match.Groups[1], match.Groups[2], match.Groups[3]);
                this.Areacode = match.Groups[1].ToString();
            }
        }
    }
    private string _phoneNumber;

    public string Areacode { get; private set; }

【讨论】:

  • 对不起,我完全是菜鸟,但这正是我所需要的。谢谢。
猜你喜欢
  • 2013-07-13
  • 2016-11-07
  • 2011-03-06
  • 1970-01-01
  • 2011-05-22
  • 2012-11-17
  • 1970-01-01
  • 1970-01-01
  • 2010-10-03
相关资源
最近更新 更多