如何检查字符串是否包含特定格式
本文关键字:是否 包含特 定格 格式 字符串 何检查 检查 | 更新日期: 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;
}