2012-01-19 261 views
166

可能重複:
How do I split a string by a multi-character delimiter in C#?如何使用字符串分隔符分割字符串?

我有這個字符串:

My name is Marco and I'm from Italy 

我想拆呢,帶分隔符is Marco and,所以我應該得到一個數組與

  • My name at [0] and
  • I'm from Italy at [1]。

我該怎麼用C#做到這一點?

試圖與

.Split("is Marco and") 

,但它希望只有一個字符。

+4

[這](http://stackoverflow.com/questions/1126915/how -do-i-split-a-string-by-a-multi-character-delimiter-in-c)之前曾被問過。 –

+0

相關https://stackoverflow.com/questions/315358/c-sharp-syntax-split-string-into-array-by-comma-convert-to-generic-list-and – barlop

回答

333
string[] tokens = str.Split(new[] { "is Marco and" }, StringSplitOptions.None); 

如果你有單個字符分隔符(例如,),則可以將其減少爲(注意單引號):

string[] tokens = str.Split(','); 
+0

你可以刪除'string':'.Split(new [] {「是Marco和」},StringSplitOptions.None)' – pomber

+4

'新字符串[]'在這種情況下是多餘的,你可以使用'new []' – pomber

+4

注意str.Split(',')中的單引號;而不是str.Split(「,」); 我花了一段時間才注意到 – gsubiran

4

您可以使用IndexOf方法來獲取字符串的位置,並使用該位置以及搜索字符串的長度來分割它。


您還可以使用正則表達式。一個簡單的google search原來這個

using System; 
using System.Text.RegularExpressions; 

class Program { 
    static void Main() { 
    string value = "cat\r\ndog\r\nanimal\r\nperson"; 
    // Split the string on line breaks. 
    // ... The return value from Split is a string[] array. 
    string[] lines = Regex.Split(value, "\r\n"); 

    foreach (string line in lines) { 
     Console.WriteLine(line); 
    } 
    } 
} 
22
.Split(new string[] { "is Marco and" }, StringSplitOptions.None) 

考慮空間surronding "is Marco and"。你想在結果中包含空格,還是希望將它們移除?這很可能是您要使用" is Marco and "作爲分隔符...

8

改爲嘗試this function

string source = "My name is Marco and I'm from Italy"; 
string[] stringSeparators = new string[] {"is Marco and"}; 
var result = source.Split(stringSeparators, StringSplitOptions.None); 
15

您正在拆分相當複雜的子字符串上的字符串。我會使用正則表達式而不是String.Split。後者更多用於標記文本。

例如:

var rx = new System.Text.RegularExpressions.Regex("is Marco and"); 
var array = rx.Split("My name is Marco and I'm from Italy"); 
3

閱讀本:http://www.dotnetperls.com/split 並將該溶液可以是這樣的:

var results = yourString.Split(new string[] { "is Marco and" }, StringSplitOptions.None);