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

本文关键字:是否 包含特 定格 格式 字符串 何检查 检查 | 更新日期: 2023-09-27 18:18:12

我想看看字符串是否包含特定的格式。例如,如果有人键入电话号码1234567890,我需要强制该人以特定格式输入电话号码。(###) ###-####.我改变了一个出售的程序,其中程序的设计是可怕的,你不能强制格式内的形式。所以,我想知道是否有一种方法来使用string.contains("(###) ###-####")或任何其他帮助将不胜感激。

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

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

这里是MSDN文档,这里是一个体面的代码项目指南

快速谷歌将向您展示大量的示例,教程和表达式库

您可以使用MaskedTextBox

这听起来像是正则表达式的工作。基本上,你必须想出一个regexp,然后使用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(免费工具)。

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

更多信息在这里

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

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

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