如何使用字符串分隔符分割字符串?

我有这个字符串:

"My name is Marco and I'm from Italy"

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

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

我怎么用c#来做呢?

我试过:

.Split("is Marco and")

但它只需要一个char。

789007 次浏览

你可以使用IndexOf方法来获取字符串的位置,并使用该位置和搜索字符串的长度来分割它。


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

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);
}
}
}
.Split(new string[] { "is Marco and" }, StringSplitOptions.None)

考虑"is Marco and"周围的空格。您希望在结果中包含空格,还是希望删除它们?你很可能想要使用" is Marco and "作为分隔符…

有一个版本的string.Split接受字符串数组和StringSplitOptions形参:

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

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

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

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

试试这个函数吧。

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);

你在拆分一个相当复杂的子字符串。我会使用正则表达式而不是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");

读取 c# Split String Examples - Dot Net Pearls,解决方案可以是这样的:

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