这可能已经在某个地方得到了回答,但是因为有数百万篇关于字符串格式的不相关帖子。
取下面的字符串:
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/