c# - 如何在c#中获取字符串中括号内的子字符串?

标签 c# .net split

我有下面这行代码,

  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("")

舒尔,您应该在访问匹配结果(如果有)之前添加一些检查。

正则表达式解释

  1. \({2} : 匹配字符 ( 两次;
  2. (.*) :尽可能多次匹配任意字符;
  3. \)\s&&\s :匹配 ) 后跟:一个或多个空格,两个&符号,一个或多个空格;
  4. 与第一点类似

关于c# - 如何在c#中获取字符串中括号内的子字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43361568/

相关文章:

c# - Linq - 分组项目属于多个组?

c# - 异步进程启动并等待它完成

c# - 以编程方式 "hello world"ASP.NET MVC 中的默认服务器端打印机

javascript - 如何在 Javascript 中拆分具有前缀和后缀的字符串?

javascript - 字符串拆分并计算出现的次数以及

c# - 在应用程序配置文件中找不到名为 'x' 的连接字符串...但它有效吗?

c# - 委托(delegate)无需创建实例即可工作

c# - 上传/获取 Blob - 在 .NET Core 中使用 Azure 存储帐户创建容器

c# - 将数组反序列化为复杂对象

java - 将文本文件转为数组