如何检查字符串是否包含特定格式

时间:2011-12-19 16:05:11

标签: c# regex

我正在尝试查看字符串是否包含特定格式。例如,如果有人键入电话号码1234567890,我需要强制某人以特定格式输入电话号码。 (###)### - ####。我正在对一个已售出的程序进行更改,其中程序的设计非常糟糕,您无法在表单中强制格式化。所以,我想知道是否有办法使用string.contains(“(###)### - ####”)或任何其他帮助将不胜感激。

6 个答案:

答案 0 :(得分:6)

听起来你想要使用正则表达式(又名正则表达式)当尝试根据模式获取或检查字符串时,正则表达式通常是最佳路径。

here is MSDN docshere is a decent how-to on codeproject

quick google将向您显示大量的示例,教程和表达式库

答案 1 :(得分:1)

您可以使用MaskedTextBox

答案 2 :(得分:0)

听起来你需要使用正则表达式吗?

More info here

答案 3 :(得分:0)

有很多选项,但最安全的是使用Regex类并将字符串与所需的表达式匹配(参见一些示例here

答案 4 :(得分:0)

为什么不创建一个方法来控制字段上的格式,例如,如果它们离开字段并输入12345671454将其传递给此方法并返回格式化字符串

   public static string FormatNumberPhone(string inputString)
   {
       string tempString;
       tempString = string.Format("{0:(###)###-####}", Convert.ToInt32(inputString));
       return tempString;
   }

答案 5 :(得分:0)

这听起来像是regular expressions的工作。基本上你必须提出一个正则表达式,然后使用例如用于检查用户输入是否匹配的IsMatch方法。如果没有,则电话号码格式错误。

这是一个示例

        // Matches (123) 123-1234 or (123) 123 1234
        var pattern = @"\((?<AreaCode>\d{3})\)\s*(?<Number>\d{3}(?:-|\s*)\d{4})";
        var regexp = new System.Text.RegularExpressions.Regex(pattern);
        var userInput = "(123) 555-1243";
        if (!regexp.IsMatch(userInput))
        {
            // Does not match. User input is in incorrect format
            return;
        }

出于学习目的,我建议您使用Expresso或google等软件作为正则表达式电话号码。我在样本中使用的表达式附带Expresso(免费工具)。