正则表达式是最快捷的方式。取决于复杂性,它也可能是计算量最大的。
这似乎是你需要什么(我没那么好,所以有可能是更好的方式来做到这一点):
^\d{1,3}:\w{1,9}\((true|false)(;true|;false)*\)\[\d(,[\d])*\]$
说明
\d{1,3}
1至3数字
:
后跟冒号
\w{1,9}
后跟一个1-9字符字母数字串,
\((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);
信用@伊恩·尼尔森
为了检查一切后:我现在有两个拆分成字符串。 :之后的整个部分存储在一个字符串中,这将更容易检查。 –
你想在()中做什么?真/假statemets由“,”分隔? –