2012-01-19 216 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);