我有下面这行代码,
if((s1 != null) && (!s1.Trim().Equals("")))
如何拆分上面的字符串,以便我可以获取子括号内的所有文本?
所以结果数组将包含 s1 != null
和 !s1.Trim().Equals("")
是否有任何通用方法可以将其应用于具有 n 个 &&
的字符串?
最佳答案
您可以使用 Regex .
string input = @"if((s1 != null) && (!s1.Trim().Equals("")))";
string pattern = @"\({2}(.*)\)\s&&\s\((.*)\){2}";
var values = Regex.Matches(input, pattern);
Console.WriteLine(values[0].Groups[1]); // s1 != null
Console.WriteLine(values[0].Groups[2]); // !s1.Trim().Equals("")
您也可以give a name to each group像这样:
string input = @"if((s1 != null) && (!s1.Trim().Equals("")))";
string pattern = @"\({2}(?<FirstGroup>.*)\)\s&&\s\((?<SecondGroup>.*)\){2}";
var values = Regex.Matches(input, pattern);
Console.WriteLine(values[0].Groups["FirstGroup"]); // s1 != null
Console.WriteLine(values[0].Groups["SecondGroup"]); // !s1.Trim().Equals("")
舒尔,您应该在访问匹配结果(如果有)之前添加一些检查。
正则表达式解释
- \({2} : 匹配字符 ( 两次;
- (.*) :尽可能多次匹配任意字符;
- \)\s&&\s :匹配 ) 后跟:一个或多个空格,两个&符号,一个或多个空格;
- 与第一点类似
关于c# - 如何在c#中获取字符串中括号内的子字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43361568/