在C#中用另一个字符串拆分一个字符串

时间:2010-02-11 15:24:16

标签: c# .net string split

我一直在使用Split()方法来分割字符串,但只有在用字符分割字符串时才会出现这种情况。有没有办法拆分string,另一个字符串是按参数拆分?

我尝试将分割器转换为字符数组,没有运气。

换句话说,我想拆分string

  

THExxQUICKxxBROWNxxFOX

by xx,并返回一个值为:

的数组
  

THE,QUICK,BROWN,FOX

11 个答案:

答案 0 :(得分:1069)

要按字符串拆分,您必须使用string array overload

string data = "THExxQUICKxxBROWNxxFOX";

return data.Split(new string[] { "xx" }, StringSplitOptions.None);

答案 1 :(得分:105)

有一个overload of Split需要字符串。

"THExxQUICKxxBROWNxxFOX".Split(new [] { "xx" }, StringSplitOptions.None);

您可以使用这些StringSplitOptions

中的任何一个
  • - 返回值包含数组 包含空字符串的元素
  • RemoveEmptyEntries - 返回值 不包括那些数组元素 包含空字符串

因此,如果字符串为“THExxQUICKxxxxBROWNxxFOX”,StringSplitOptions.None将在数组中为“xxxx”部分返回空条目,而StringSplitOptions.RemoveEmptyEntries则不会。

答案 2 :(得分:60)

Regex.Split(string, "xx")

通常是我这样做的方式。当然你需要一个

using System.Text.RegularExpressions;

但是我一直都需要那个库。

答案 3 :(得分:42)

String.Split有一个超载:

"THExxQUICKxxBROWNxxFOX".Split(new [] {"xx"}, StringSplitOptions.None);

答案 4 :(得分:21)

我通常喜欢使用自己的扩展名:

string data = "THExxQUICKxxBROWNxxFOX";
var dataspt = data.Split("xx");
//>THE  QUICK  BROWN  FOX 


//the extension class must be declared as static
public static class StringExtension
{   
    public static string[] Split(this string str, string splitter)
    {
        return str.Split(new[] { splitter }, StringSplitOptions.None);
    }
}

如果Microsoft决定在更高版本中包含此方法重载,则会导致异常。这也是微软在此期间未包含此方法的可能原因:至少有一家我工作过的公司在所有C#项目中都使用了这种扩展。

如果方法不存在,也可以在运行时有条件地定义方法。

答案 5 :(得分:7)

之前的答案都是正确的。我更进一步,通过在String上定义一个扩展方法让C#为我工作:

public static string[] Split(this string toSplit, string splitOn) {
    return toSplit.Split(new string[] { splitOn }, StringSplitOptions.None);
}

这样我可以用简单的方式在任何字符串上调用它,这是我第一次尝试完成此操作时的天真预期:

"a big long string with stuff to split on".Split("g str");

答案 6 :(得分:6)

string data = "THExxQUICKxxBROWNxxFOX";

return data.Replace("xx","|").Split('|');

只需仔细选择替换字符(选择一个不太可能出现在字符串中的字符)!

答案 7 :(得分:1)

这也很容易:

string data = "THExxQUICKxxBROWNxxFOX";
string[] arr = data.Split("xx".ToCharArray(), StringSplitOptions.RemoveEmptyEntries);

答案 8 :(得分:0)

从.NET Core 2.0开始,有一个覆盖字符串的替代项。

所以现在您可以"THExxQUICKxxBROWNxxFOX".Split("xx")了。

请参见https://docs.microsoft.com/en-us/dotnet/api/system.string.split?view=netcore-2.0#System_String_Split_System_String_System_StringSplitOptions_

答案 9 :(得分:0)

先创建这个函数。

string[] xSplit(string str, string sep) {
    return str.Split(new [] {sep}, StringSplitOptions.None);
}

然后像这样使用它。

xSplit("THExxQUICKxxBROWNxxFOX", "xx");

答案 10 :(得分:-1)

最简单的方法是使用String.Replace

string myString = "THExxQUICKxxBROWNxxFOX";
mystring = mystring.Replace("xx", ", ");

或更简单:

string myString = "THExxQUICKxxBROWNxxFOX".Replace("xx", ", ");