c# - 检查字符串的格式

标签 c# string format

这可能已经在某个地方得到了回答,但是因为有数百万篇关于字符串格式的不相关帖子。

取下面的字符串:

24:Something(true;false;true)[0,1,0]

在这种情况下,我希望能够做两件事。我需要检查是否满足以下所有条件:

  • 只有一个:使用 Split() 实现,无论如何我都需要使用它来分离两个部分。
  • : 之前的整数是一个1-3位的int 简单的int.parse逻辑
  • () 存在,并且存在“Something”,在本例中是任何少于 10 个字符的字符串
  • [] 存在并且其中至少有 1 个整数。另外,确保 [] 中的元素是用 , 分隔的整数

我怎样才能最好地做到这一点? 编辑:我已经划掉了我到目前为止所取得的成就。

最佳答案

正则表达式是最快的方法。根据复杂性,它也可能是计算成本最高的。

这似乎可以满足您的需求(我不是那么好所以可能有更好的方法来做到这一点):

^\d{1,3}:\w{1,9}\((true|false)(;true|;false)*\)\[\d(,[\d]) *\]$

解释

\d{1,3} 1到3位数字

: 后面跟一个冒号

\w{1,9} 后跟 1-9 个字符的 alpha-numeric 字符串,

\((真|假)(;真|;假)*\) 后跟包含“true”或“false”的括号,后跟任意数量的“;true”或“;false”,

\[\d(,[\d])*\] 后跟另一组包含数字的括号,后跟任意数量的逗号+数字。

字符串开头和结尾的 ^ 和 $ 表示字符串的开头和结尾,这很重要,因为我们正在尝试验证整个字符串是否与格式匹配。

代码示例

var input = "24:Something(true;false;true)[0,1,0]";

var regex = new System.Text.RegularExpressions.Regex(@"^\d{1,3}:.{1,9}\(.*\)\[\d(,[\d])*\]$");
bool isFormattedCorrectly = regex.IsMatch(input);

信用@伊恩尼尔森

关于c# - 检查字符串的格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7623104/

相关文章:

c# - 使用 WebDAV 和 C# 读取电子邮件的主题和正文

c# - CultureInfo.CreateSpecificCulture() 和类的构造函数之间的区别?

c# - 在 DbContext 之外延迟加载

php - 字符串替换多个值

java - 如何在字符串中搜索多个单词

javascript - 如何从 Javascript 日期中获取年份的最后 2 位数字

c# - 调用 URL - c#

创建一个程序,要求用户输入名称并使用 C 创建 10 个名称序列化的文件

r - 格式化时间跨度以显示小时、分钟、秒

java - 将 Java Double 格式化为 7 个字符