Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/258.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在C中拆分字符串和字符串#_C#_Asp.net_String_Token - Fatal编程技术网

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字符串[]
重载的原因。