2011-10-24 80 views
1

我有一個像"AAA(A B C) (ABC:abc)"如何濺出一串擺脫AAA(ABC)(ABC:ABC)廣播公司(ABC)

一個字符串,我想拆分字符串類似"AAA(A B C)" 如何,我們可以使用實現String.Split()方法?

字符串可能是AAA(ABC:abc)或AAA(A B C)BCD(X Y Z)(ABC:abc)。我的目標是將它分成兩個獨立的字符串(ABC:abc)。

希望這會讓它更清楚。

+3

你不會爲此使用'string.Split'。 –

+0

有些背景知道爲什麼你想要字符串的確切部分有助於確定一個好的方法來做到這一點。 – Guffa

回答

0

如果我知道你需要什麼,你可以使用:

string s = "AAA(A B C) (ABC:abc)"; 
string t = s.Substring(0, s.IndexOf(')') + 1); 
+0

爲什麼選擇downvote?這是什麼原因?我的代碼有問題嗎?請解釋,以便我可以糾正我的錯誤或刪除這篇文章! – Marco

-1
"AAA(A B C) (ABC:abc)".Split(new[] { ") (" }, StringSplitOptions.None); 
1

好了,你可以使用SplitJoin要做到這一點,但它不是漂亮或有效率:

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(' ')); 
0

Regex.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]); 

如果字符串改變長度,在所有的,例如:

AAAAAAA(ABCD)(ABCD:ABCD)

這個表達式將仍然匹配零件AAAAAAA(A B C D)(ABCD:abcd)

相關問題