【问题标题】:c# split string only if delimiter foundc#仅在找到分隔符时才拆分字符串
【发布时间】:2018-08-28 05:58:32
【问题描述】:
string search = "Apple : 100";

string[] result = search .Split(':');

适用于以下输出:

result[0] ==> Apple
result[1] ==> 100

但是对于这个:

string search  = "Apple";    
string[] result = search .Split(':');

输出:

result[0] ==> Apple

为什么输出是 Apple ?如果搜索 string 中缺少分隔符,我只想要空数组。

任何帮助将不胜感激。

【问题讨论】:

  • 为什么不在拆分前检查分隔符?问题标题是显而易见的答案......
  • 因为这是string.Split() 的工作方式? msdn.microsoft.com/de-de/library/b873y76a(v=vs.110).aspx
  • "为什么输出是 Apple ?"因为这是大多数人所期望的结果。仅仅因为没有第二个或第三个条目而丢弃唯一的条目不是标准用例。
  • 只有当string包含你的分隔符时,你才能拆分它。

标签: c# .net string split


【解决方案1】:

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

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

做你想做的事:

var result = search.Contains(':') ? search.Split(':') : new string[0];

【讨论】:

  • 谢谢,没有考虑这个解决方案。但是你是如何从 docs 中如此快速地选择句子的呢?
  • @stom - 我知道它的行为是这样的 :) 所以寻找证据哈哈
【解决方案2】:

如果字符串不包含用作分隔符的字符,则返回一个包含整个字符串作为数组元素的数组。 在您的情况下,字符串 Apple 不包含分隔符。这就是原因,数组包含 整个字符串,即 Apple 作为第零个元素

参考:MSDN Spit() function

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-28
    • 1970-01-01
    • 2013-12-06
    相关资源
    最近更新 更多