Answers:
为了按字符串分割,您必须使用字符串数组重载。
string data = "THExxQUICKxxBROWNxxFOX";
return data.Split(new string[] { "xx" }, StringSplitOptions.None);
string.Split
。
string[] Split(string pattern)
,这是我能想到的最自然的用法,但目前还没有。我之前写过C,所以我习惯于使用char数组,但是我仍然讨厌看到char[]
C#代码弹出,因为它突然将我的注意力从流级别转移到了字节级别。有人知道为什么C#库人员设计这样的Split方法吗?如果有充分的理由,尽管给您带来不便,我还是可以尝试欣赏。
data.Split("xx")
呢?
有一个带字符串的Split重载。
"THExxQUICKxxBROWNxxFOX".Split(new [] { "xx" }, StringSplitOptions.None);
您可以使用这些StringSplitOptions中的任何一个
因此,如果字符串为“ THExxQUICKxxxxBROWNxxFOX”,StringSplitOptions.None
则将在数组中为“ xxxx”部分返回一个空条目,而StringSplitOptions.RemoveEmptyEntries
不会。
Regex.Split(string, "xx")
通常是我这样做的方式。
当然,您需要:
using System.Text.RegularExpressions;
要么 :
System.Text.RegularExpressions.Regex.Split(string, "xx")
但是我又一直需要那个图书馆。
RegEx.Split
比简单的要昂贵得多String.Split
。
Regex.Escape
请先在该字符串上使用,这将转义任何正则表达式元字符。
为此有一个String.Split的重载:
"THExxQUICKxxBROWNxxFOX".Split(new [] {"xx"}, StringSplitOptions.None);
我通常喜欢使用自己的扩展名:
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#项目中都使用了这种扩展。
如果该方法不存在,则有可能在运行时有条件地定义该方法。
params string[] splitter
作为第二个参数,并改变new[] {splitter}
到splitter
支持多个定界符。
先前的答案都是正确的。我更进一步,通过在String上定义扩展方法,使C#为我工作:
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");
从.NET Core 2.0开始,有一个覆盖字符串的替代项。
所以现在您可以做"THExxQUICKxxBROWNxxFOX".Split("xx")
。
string data = "THExxQUICKxxBROWNxxFOX";
return data.Replace("xx","|").Split('|');
只需仔细选择替换字符即可(选择字符串中不太可能存在的替换字符)!
|
已经包含char 怎么办,因此我认为使用该字符串很危险。
这也很容易:
string data = "THExxQUICKxxBROWNxxFOX";
string[] arr = data.Split("xx".ToCharArray(), StringSplitOptions.RemoveEmptyEntries);
"THExQUICK"
在我们不希望分割的地方分割
最简单的方法是使用String.Replace
:
string myString = "THExxQUICKxxBROWNxxFOX";
mystring = mystring.Replace("xx", ", ");
或更简单地说:
string myString = "THExxQUICKxxBROWNxxFOX".Replace("xx", ", ");
xx
)。