我一直在使用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")
。