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", ", ");