基于多个分隔符获取字符串的一部分?

3

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

例如,从以下字符串中:

"abc(def)ghi"

我希望得到"def",不带括号。

我已经做了一些搜索,但目前找到的最接近的东西是String.Split():

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

但是String.Split一次只能使用一个分隔符。有没有更好的方法只获取括号内的字符串?

你可以使用类似于这里所示的正则表达式 https://dev59.com/qmoy5IYBdhLWcg3wdt8L#8526268 - keyboardP
你可以添加任意数量的分隔符:s.Split('(',')') 在你的情况下应该可以工作。 - hendrik
4个回答

7
正则表达式可以在这里发挥作用。
string input = "abc(def)ghi";
var def = Regex.Match(input, @"\((.+?)\)").Groups[1].Value;

1
您可以传入一个字符数组来进行分割。
像这样:
string s = "abc(def)ghi";
char[] chars = new char[] { '(', ')' };
string[] parts = s.Split(chars);

无论字符数组中的字符和要分割的字符串中的字符以何种顺序输入,它都会在每次字符匹配时将字符串拆分。 - ThoBa
如果你期望parts[0]是"abc",parts[1]是"def",parts[2]是"ghi",那么它会像ThoBa所说的那样。 - Sean Hosey
@L.B 如果你期望它的结果与 abc(def)ghi 相同,那么是的。 - Tim S.

1
你可以根据多个字符进行分割:s.Split("()".ToCharArray())。不确定这是否是适合你的正确解决方案,或者需要使用正则表达式。

你不需要将字符串转换为字符数组。你可以直接写 s.Split('(',')')。 - hendrik

0

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

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接