我一直在使用Split()方法拆分字符串,但这似乎只在按字符拆分字符串时有效。有没有一种方法可以拆分一个字符串,另一个字符串作为拆分依据参数?

我尝试过将拆分器转换为字符数组,但没有成功。

换句话说,我想拆分字符串:

Thexx快速xx棕色xx FOX

通过xx,并返回一个值为的数组:

快,棕色,狐狸


当前回答

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

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#项目中都使用了这种扩展。

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

其他回答

为了按字符串拆分,必须使用字符串数组重载。

string data = "THExxQUICKxxBROWNxxFOX";

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

前面的答案都是正确的。我更进一步,通过在String:

public static class Extensions
{
    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");

首先创建此函数。

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

然后像这样使用。

xSplit("THExxQUICKxxBROWNxxFOX", "xx");

最简单的方法是使用字符串。替换:

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

或者更简单地说:

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

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

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#项目中都使用了这种扩展。

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