用C#中的另一个字符串分割一个字符串

我一直在使用Split()方法来拆分字符串,但这仅在按字符拆分字符串时才起作用。 有没有办法分割一个string ,另一个字符串是按参数分割?

我试过将拆分器转换为字符数组,但是没有运气。

换句话说,我想分割string

THEXXQUICKxxBROWNxxFOX

通过xx ,并返回具有值的数组:

THE,QUICK,BROWN,FOX


#1楼

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

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决定在更高版本中包括此方法重载,则会导致异常。 这也是Microsoft同时未包含此方法的可能原因:我工作过的至少一家公司在其所有C#项目中都使用了这种扩展。

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


#2楼

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

string data = "THExxQUICKxxBROWNxxFOX";

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

#3楼

Regex.Split(string, "xx")

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

using System.Text.RegularExpressions;

但是我又一直需要那个图书馆。


#4楼

有一个字符串拆分重载

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

您可以使用这些StringSplitOptions中的任何一个

  • -返回值包括包含空字符串的数组元素
  • RemoveEmptyEntries-返回值不包括包含空字符串的数组元素

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


#5楼

为此有一个String.Split的重载:

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

#6楼

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

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

或更简单地说:

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

#7楼

string data = "THExxQUICKxxBROWNxxFOX";

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

只需仔细选择替换字符(选择字符串中不太可能存在的替换字符)即可!


#8楼

先前的答案都是正确的。 我更进一步,通过在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");

#9楼

这也很容易:

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

#10楼

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

因此,现在您可以执行"THExxQUICKxxBROWNxxFOX".Split("xx")

请参阅https://docs.microsoft.com/zh-cn/dotnet/api/system.string.split?view=netcore-2.0#System_String_Split_System_String_System_StringSplitOptions_

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值