C#将string拆分为另一个string

我一直在使用Split()方法来拆分string,但是这只有在按字符拆分string时才起作用。 有什么办法来拆分一个string ,另一个string是由参数拆分? 我已经尝试将分离器转换为字符数组,没有运气。

换句话说,我想分割string

THExxQUICKxxBROWNxxFOX

xx ,并返回一个数组值:

快速,棕色,狐狸

为了分割一个string,你将不得不使用string数组重载 。

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

有一个需要string的Split的重载 。

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

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

  • – 返回值包含包含空string的数组元素
  • RemoveEmptyEntries – 返回值不包含包含空string的数组元素

所以如果string是“THExxQUICKxxxxBROWNxxFOX”, StringSplitOptions.None将为数组中的“xxxx”部分返回一个空的条目,而StringSplitOptions.RemoveEmptyEntries则不会。

 Regex.Split(string,"xx") 

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

 using System.Text.RegularExpressions; 

但是再一次我需要这个lib。

这里有一个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); } } 

这将导致一个exception,如果微软决定在以后的版本中包含这种方法 – 超载。 这也是微软在此期间还没有包括这个方法的可能原因:至less有一家我工作过的公司,在他们所有的C#项目中都使用了这样的扩展。

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

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

只要仔细selectreplace字符(select一个不可能出现在string中的字符)!

以上答案都是正确的。 我更进一步,通过在String上定义一个扩展方法使C#为我工作:

 public static string[] Split(this string toSplit, string splitOn) { return toSplit.Split(new string[] { splitOn }, StringSplitOptions.None); } 

这样,我可以以简单的方式在任何string上调用它,我天真地期望第一次尝试完成这个:

 "a big long string with stuff to split on".Split("g str"); 

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

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

或者更简单地说:

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