如何从电话号码中删除格式?

时间:2015-09-02 18:15:00

标签: c# asp.net-mvc database linq

我有一个MVC应用程序,要求用户提供电话号码。有一个面具,所以它总是看起来像"(567)222-0001。

当此电话号码保存在数据库中时,会使用这些括号和连字符保存。相反,我想将它保存到DB而没有括号和连字符,即原始电话号码。该应用程序使用LINQ。

感谢任何帮助。另外,我是MVC的新手,所以我有一个非常粗略的想法,在哪里查看代码。

1 个答案:

答案 0 :(得分:3)

Regex.Replace(phoneNumber, @"[^0-9]", "")

在将它保存到数据库之前,它并不是真正的"至少不容易的地方。我已经看过其他框架,如RoR或Django,可以让你做一些事情,比如定义一个" pre_save"提供钩子的方法或类似方法,但实体框架没有类似的功能。

但是,您可以通过其他方式完成此操作。可能最简单的方法是在属性上定义自定义setter:

private string phoneNumber;
public string PhoneNumber
{
    get { return phoneNumber; }
    set { phoneNumber = !string.IsNullOrWhiteSpace(value) ? Regex.Replace(value, @"[^0-9]", "") : null; }
}

然后,每次为该属性设置一些值时,它将自动删除任何非数字字符。或者,您也可以在保存之前将其清理干净:

model.PhoneNumber = Regex.Replace(model.PhoneNumber, @"[^0-9]", "");
db.Entry(model).State = EntityState.Modified;
db.SaveChanges();