关于c#:如何用字符串分隔符拆分字符串?

How can I split a string with a string delimiter?

本问题已经有最佳答案,请猛点这里访问。

我有这根绳子:

1
My name is Marco and I'm from Italy

我想用分隔符is Marco and分割它,所以我应该得到一个数组

  • 在[0]和
  • I'm from Italy在〔1〕处。

我怎么用C来做?

我尝试过:

1
.Split("is Marco and")

但它只需要一个字符。


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

如果您有一个单字符分隔符(例如,),您可以将其减少到(注意单引号):

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


1
.Split(new string[] {"is Marco and" }, StringSplitOptions.None)

考虑包围"is Marco and"的空间。要在结果中包含空格,还是要将其删除?很可能你想用" is Marco and"作为分隔符…


您正在拆分相当复杂的子字符串上的字符串。我将使用正则表达式而不是string.split。后者更适合于标记您的文本。

例如:

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

试试这个函数。

1
2
3
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);

您可以使用IndexOf方法获取字符串的位置,并使用该位置和搜索字符串的长度将其拆分。

也可以使用正则表达式。一个简单的谷歌搜索结果是这样的

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
using System;
using System.Text.RegularExpressions;

class Program {
  static void Main() {
    string value ="cat

dog

animal

person"
;
    // Split the string on line breaks.
    // ... The return value from Split is a string[] array.
    string[] lines = Regex.Split(value,"

"
);

    foreach (string line in lines) {
        Console.WriteLine(line);
    }
  }
}

阅读C拆分字符串示例-点网珍珠,解决方案可以是:

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


有一个版本的string.Split采用字符串数组和StringSplitOptions参数:

http://msdn.microsoft.com/en-us/library/tabh47cf.aspx