C# 如何从AAA(ABC)(ABC:ABC)中溢出字符串以获取ABC(ABC)

C# 如何从AAA(ABC)(ABC:ABC)中溢出字符串以获取ABC(ABC),c#,C#,我有一根像AAA a B C ABC:ABC这样的线 我想像AAA A B C一样拆分字符串 我们如何使用String.Split方法实现这个功能 字符串可以是AAA ABC:ABC或AAAA B C BCDX Y Z ABC:ABC。我的目标是将它从ABC分割成两个单独的字符串:ABC 希望这能让事情变得更清楚 如果我了解您需要什么,您可以使用: string s = "AAA( A B C) (ABC:abc)"; string t = s.Substring(0, s.IndexOf(')

我有一根像AAA a B C ABC:ABC这样的线

我想像AAA A B C一样拆分字符串 我们如何使用String.Split方法实现这个功能

字符串可以是AAA ABC:ABC或AAAA B C BCDX Y Z ABC:ABC。我的目标是将它从ABC分割成两个单独的字符串:ABC


希望这能让事情变得更清楚

如果我了解您需要什么,您可以使用:

string s = "AAA( A B C) (ABC:abc)";
string t = s.Substring(0, s.IndexOf(')') + 1);
好吧,您可以使用Split和Join来实现这一点,但它既不美观也不高效:

string input = "AAA( A B C) (ABC:abc)";
string result = String.Join(" ", input.Split(' ').Take(4).ToArray())
另一种方法是使用LastIndexOf定位最后一个空间:

string result = input.Substring(0, input.LastIndexOf(' '));
在这种情况下,这是一个更好的选择

var pattern = @"(?<=\)) (?=\()";
var input = "AAA( A B C) (ABC:abc)";

var parts = Regex.Split(input, pattern);

Assert.AreEqual("AAA( A B C)", parts[0]);
如果字符串的长度发生任何变化,例如:

AAAAAAAA A B C D ABCD:ABCD


此正则表达式仍将匹配AAAAAA A B C D部分和ABCD:ABCD

您不会使用string.Split。了解一下为什么要使用字符串的确切部分将有助于确定执行此操作的好方法。为什么要进行向下投票?原因是什么?我的代码有问题吗?请解释,这样我就可以纠正我的错误或删除这篇文章!!
var pattern = @"(?<=\)) (?=\()";
var input = "AAA( A B C) (ABC:abc)";

var parts = Regex.Split(input, pattern);

Assert.AreEqual("AAA( A B C)", parts[0]);