Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/25.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#_.net_String_Split - Fatal编程技术网

c#仅当找到分隔符时才拆分字符串

c#仅当找到分隔符时才拆分字符串,c#,.net,string,split,C#,.net,String,Split,工作正常,输出如下: string search = "Apple : 100"; string[] result = search .Split(':'); 但对于这一点: result[0] ==> Apple result[1] ==> 100 产出: string search = "Apple"; string[] result = search .Split(':'); 为什么输出是苹果?如果搜索字符串中缺少分隔符,我只需要空数组 任何帮助都将不胜感激。

工作正常,输出如下:

string search = "Apple : 100";

string[] result = search .Split(':');
但对于这一点:

result[0] ==> Apple
result[1] ==> 100
产出:

string search  = "Apple";    
string[] result = search .Split(':');
为什么输出是苹果?如果搜索
字符串中缺少分隔符,我只需要空数组


任何帮助都将不胜感激。

如果字符串不包含用作分隔符的字符,那么它将返回一个包含整个字符串的数组作为数组元素。 在您的情况下,字符串
Apple
,不包含分隔符。这就是为什么数组包含整个字符串,即Apple作为第0个元素


参考:

String.Split
的工作方式是返回一个包含分割段的数组。如果分隔符不存在,则只有一个段-整个字符串。发件人(返回值详细信息下):

如果此实例不包含分隔符中的任何字符串,则返回的数组由包含此实例的单个元素组成

要想做你想做的事,你可以做:

result[0] ==> Apple

为什么不在拆分之前检查分隔符呢?问题标题是显而易见的答案……因为这就是
string.Split()
的工作方式?“为什么产出是苹果?”因为这是大多数人所期望的结果。仅仅因为没有第二个或第三个条目就扔掉唯一的条目不是标准的用例。只有当它包含分隔符时,才可以拆分
string
。谢谢,没有考虑这个解决方案。但是你怎么这么快就从docs那里找到了这个句子呢?@stom-我知道它的行为是这样的:)所以我想找到证据哈哈
var result = search.Contains(':') ? search.Split(':') : new string[0];