如何使用字符串分隔符拆分字符串?[复制]

How can I split a string with a string delimiter? [duplicate]

提问人:markzzz 提问时间:1/19/2012 最后编辑:jordanzmarkzzz 更新时间:8/5/2022 访问量:814836

问:

我有这个字符串:

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

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

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

如何使用 C# 做到这一点?

我试过:

.Split("is Marco and")

但它只想要一个字符。

C# 字符串 拆分

评论

0赞 barlop 6/5/2017
相关 stackoverflow.com/questions/315358/...

答:

13赞 Patrick 1/19/2012 #1

您可以使用该方法获取字符串的位置,并使用该位置和搜索字符串的长度对其进行拆分。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);
    }
  }
}
38赞 Anders Marzi Tornblad 1/19/2012 #2
.Split(new string[] { "is Marco and" }, StringSplitOptions.None)

考虑空间 surronding .是要在结果中包含空格,还是要删除它们?您很有可能想用作分隔符......"is Marco and"" is Marco and "

5赞 Charles Lambert 1/19/2012 #3

有一个版本需要一个字符串数组和一个参数:string.SplitStringSplitOptions

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

评论

1赞 Anders Marzi Tornblad 1/19/2012
不,它需要一个字符串数组。
626赞 juergen d 1/19/2012 #4
string[] tokens = str.Split(new[] { "is Marco and" }, StringSplitOptions.None);

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

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

评论

1赞 pomber 7/31/2015
您可以删除:string.Split(new[] { "is Marco and" }, StringSplitOptions.None)
5赞 pomber 8/20/2015
new string[]在这种情况下是多余的,你可以只使用new []
9赞 gsubiran 7/13/2016
请注意 str 中的单引号。分裂(',');而不是 str。分裂(“,”);我花了一段时间才注意到
2赞 garethb 12/23/2016
@user3656612 因为它接受字符(char),而不是字符串。字符用单引号括起来。
28赞 Johan 1/20/2017
我不明白为什么它们在 C# 中包含 string.split(char) 而不是 string.split(string)...我的意思是有string.split(char[])和string.split(string[])!
15赞 DanTheMan 1/19/2012 #5

请尝试使用此功能

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);
21赞 Huusom 1/19/2012 #6

您正在将字符串拆分到一个相当复杂的子字符串上。我会使用正则表达式而不是 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");
12赞 Guillaume Slashy 1/19/2012 #7

阅读 C# 拆分字符串示例 - Dot Net Pearls,解决方案可以是这样的:

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