C# 如何在C中拆分字符串和字符串#
我想使用字符串作为分隔符将字符串拆分为字符串[]C# 如何在C中拆分字符串和字符串#,c#,asp.net,string,token,C#,Asp.net,String,Token,我想使用字符串作为分隔符将字符串拆分为字符串[] String delimit = "[break]"; String[] tokens = myString.Split(delimit); 但是上面的方法只能使用字符作为分隔符 String delimit = "[break]"; String[] tokens = myString.Split(delimit); 有人吗?像这样: mystring.Split(new string[] { delimit }, StringSplitO
String delimit = "[break]";
String[] tokens = myString.Split(delimit);
但是上面的方法只能使用字符作为分隔符
String delimit = "[break]";
String[] tokens = myString.Split(delimit);
有人吗?像这样:
mystring.Split(new string[] { delimit }, StringSplitOptions.None);
出于某种原因,唯一采用字符串的重载将其与StringSplitOptions
我不知道为什么没有
string.Split(params string[])
重载。我个人更喜欢这样,因为正则表达式有这样的拆分:
public static string[] Split(this string input, string delimit)
{
return Regex.Split(input, delimit);
}
+1为了安全起见,我建议使用
Regex.Escape(disfinder)
来转义可能是分隔符一部分的任何元字符。由于字符串不是真正的Regex,因此调用Regex解析器毫无意义。Regex.Split
首先解析输入,这很昂贵,然后拆分字符串的输出matches@Munim是的,Regex正在与匹配组合作,但OP询问的是“简单”方式,而不是“最快”方式。对我来说似乎很容易。我同意你的观点@Victor。这是最简单但最慢的:)干杯我也一直想知道。因此,我不再使用string.split()函数,而是使用旧的Visula Basic split函数。执行MyArray=split的位置(字符串,分隔符)。当你在编程vb.net时,它就在那里并且很容易使用,所以我从来没有尝试过深入研究这个问题。因此,在这里阅读答案将是一件令人费解的事情。很好的答案。第一次工作。=)实际上,也没有String.Split(char)
重载。但是有一个String.Split(params char[])
重载,这就是允许您使用单个char
调用它的原因。没有String.Split(params String[])
重载的原因是,不能有两个这样的参数重载,因为在没有参数的情况下调用String.Split()
会在这两个参数之间产生歧义。@Sven:有两个params
重载没有什么错。如果在没有任何参数的情况下调用它,则在调用站点上会出现错误。(我试过)对于Split
,这没有什么问题。但是,你是对的,我应该说params string[]
。是的,但是在这种情况下string.Split()是显式允许的(这意味着空格字符是分隔符)。如果同时存在params char[]
和params string[]
重载,则无法再进行该调用,而获得该行为的唯一方法是string.Split((char[])null)
或string.Split(新字符[0])
,两者都不是特别优雅的。我怀疑这就是没有提供params字符串[]
重载的原因。