【问题标题】:Taking part of string based on multiple delimiters?基于多个分隔符的字符串的一部分?
【发布时间】:2013-10-02 23:39:58
【问题描述】:

我有一个带括号的字符串,我希望只提取括号内的字符串部分。

例如,从以下字符串:

"abc(def)ghi"

我想得到"def",不带括号。

我已经进行了一些搜索,但到目前为止我发现的最接近的是 String.Split():

string s = "3,2,4,5,6";
string[] words = s.Split(',');

但是 String.Split 一次只需要 1 个分隔符。有没有更好的方法只抓取括号内的字符串?

【问题讨论】:

  • 您可以使用像这里显示的那样的正则表达式stackoverflow.com/a/8526268/187697
  • 您可以添加任意数量的分隔符:s.Split('(',')') 应该适用于您的情况。

标签: c# string split delimiter


【解决方案1】:

正则表达式可以在这里提供帮助

string input = "abc(def)ghi";
var def = Regex.Match(input, @"\((.+?)\)").Groups[1].Value;

【讨论】:

    【解决方案2】:

    您可以拆分多个字符:s.Split("()".ToCharArray())。不确定这是适合您的解决方案,还是正则表达式。

    【讨论】:

    • 您不需要将字符串转换为字符数组。你可以简单地写 s.Split('(',')')
    【解决方案3】:

    您可以传入要拆分的字符数组。

    像这样:

    string s = "abc(def)ghi";
    char[] chars = new char[] { '(', ')' };
    string[] parts = s.Split(chars);
    

    【讨论】:

    • 只要一个字符匹配字符数组中的一个字符,它就会分割字符串。无论它们以何种顺序输入(在数组中和要拆分的字符串中)。
    • 如果您希望parts[0] 为“abc”,parts[1] 为“def”,parts[2] 为“ghi”,那么 - 是的 - 它会 - 就像 ThoBa声明。
    • @L.B 如果您希望它与abc(def)ghi 的结果相同,是的。
    【解决方案4】:

    只是另一种选择。简单,双重分割

            string s = "abc(def)ghi";
            string []first = s.Split('(');
            string[] second = first[1].Split(')');
            Console.WriteLine(second[0]);
            Console.ReadLine();
    

    【讨论】:

      猜你喜欢
      • 2011-11-28
      • 2012-02-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-08
      • 2012-01-23
      • 2014-03-13
      • 1970-01-01
      相关资源
      最近更新 更多