【问题标题】:How can I remove formatting from a phone number? [duplicate]如何从电话号码中删除格式? [复制]
【发布时间】:2015-11-28 09:17:39
【问题描述】:

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

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

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

【问题讨论】:

  • Regex.Replace(phoneNumber, @"[(|)|-]", "");

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


【解决方案1】:
Regex.Replace(phoneNumber, @"[^0-9]", "")

实际上并没有一个“在保存到数据库之前”的地方可以绑定,至少不容易绑定。我见过其他框架,例如 RoR 或 Django,它们确实可以让你做一些事情,比如定义一个“pre_save”方法或类似的方法来提供一个钩子,但是实体框架没有类似的功能。

但是,您可以通过其他方式进行操作。可能最简单的方法是在属性上定义自定义设置器:

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();

【讨论】:

  • 谢谢!我在我的问题中提到我是 MVC 的新手,我大致知道在代码中的哪里可以解决这个问题。
  • 我需要知道该位置,然后才能将其存储到数据库中。因为,这就是我的意图,将电话号码存储在变量中,请使用 Regex.Replace(phoneNumber, @"[(|)|-]", "");然后它被存储在数据库中。
  • @dsingh23:这种额外的转折可能会让您的问题更加独特。如果您更改您的问题以更清楚您的最终目标是什么,我可以重新提出问题。
  • 访问屏蔽文本框的原始文本(值)属性不是更有意义吗?我们需要更多地了解 OP 用来掩盖的控制/机制,但它似乎比 RegEx 更合适。
  • @LynnCrumbling:一个(好的)JS 掩码插件不会输出任何掩码字符。如果这就是发生的事情,那么,是的,我建议 OP 将插件配置为不包含掩码字符,或者如果不存在这样的选项,则查找另一个插件。但是,假设它是按原样发布的,那么正则表达式是事后删除它的最佳方法。
猜你喜欢
  • 2020-10-07
  • 2021-02-06
  • 1970-01-01
  • 2020-09-07
  • 2020-10-29
  • 1970-01-01
  • 1970-01-01
  • 2011-02-12
  • 1970-01-01
相关资源
最近更新 更多