我一直在使用Split()
方法来分割字符串,但只有在用字符分割字符串时才会出现这种情况。有没有办法拆分string
,另一个字符串是按参数拆分?
我尝试将分割器转换为字符数组,没有运气。
换句话说,我想拆分string
:
THExxQUICKxxBROWNxxFOX
by xx
,并返回一个值为:
THE,QUICK,BROWN,FOX
答案 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
中的任何一个因此,如果字符串为“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")
了。
答案 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", ", ");