使用正则表达式格式化电话号码
使用正则表达式格式化电话号码
这个问题在这里已经有了答案:
可能的重复:
我有一个未格式化的电话号码(保证为10位数字)和一个未格式化的分机(可能为空、空白或任意数量的数字)。我需要将它们拼在一起成为一个“友好”的字符串。我想把它们连接起来,然后使用 Regex.Replace 格式化连接结果。这是我正在使用的单元测试,以尝试在插入之前尝试各种正则表达式:
[Test, Ignore("Sandbox, does not test production code")] public void TestPhoneRegex() { string number = "1234567890"; string extension = ""; var formattedContactNumber = Regex.Replace("{0} x{1}".FormatWith(number, extension), @"^(\d{3})[ -]?(\d{3})[ -]?(\d{4})( x\d+)?", @"$1-$2-$3$4"); Debug.WriteLine("{0} x{1}".FormatWith(number, extension)); Debug.WriteLine(formattedContactNumber); Assert.AreEqual("123-456-7890", formattedContactNumber); }
期望的格式化字符串是去除“x”和分机的格式化电话号码。然而,最后的捕获组匹配了有或者没有数字的“x”,所以我得到了“123-456-7890 x”而不是“123-456-7890”。这是发布之前需要解决的最后一个开发问题。请帮忙?
admin 更改状态以发布 2023年5月23日
我喜欢正则表达式,但是在这种情况下似乎并没有什么用处。你所做的只是将10个数字的字符串添加破折号,然后添加一个可选的“x”和扩展号。简单的方法更好。
public static String beautifyPhoneNumber(String number, String extension) { String beautifulNumber = number.Substring(0, 3) + "-" + number.Substring(3, 3) + "-" + number.Substring(6, 4); if (!String.IsNullOrEmpty(extension)) { beautifulNumber += " x" + extension; } return beautifulNumber; }