【问题标题】:Split("", "|") returns 1 itemSplit("", "|") 返回 1 项
【发布时间】:2015-12-31 00:40:05
【问题描述】:

当我执行以下操作时......

    Dim s As String = ""
    Dim sLines() As String = s.Split("|", StringSplitOptions.None)

...

sLines.Count 为 1。

为什么?

没有什么要拆分的,要拆分的字符串是空的,所以我希望sLines.Count为0。

谢谢。

【问题讨论】:

标签: vb.net split string-function


【解决方案1】:

一种一致性:如果"a|b"| 上拆分为["a", "b"] 并且"a"| 上拆分为["a"],这对@987654328 是有意义的@ 拆分 | 为 ["", "b"] 和 "" 拆分 | 为 [""]。

您可以通过传递StringSplitOptions.RemoveEmptyEntries 而不是None 来删除所有 个空条目,或者只需手动检查s = String.Empty

【讨论】:

    【解决方案2】:

    查看Split的文档:

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

    这是你的情况。 "" 不包含 "|",因此返回单个元素 ""

    【讨论】:

      【解决方案3】:

      你可以使用IIf()函数来处理空字符串

       Dim s As String = ""
       Dim sLines() As String = IIf(s = String.Empty, Nothing, s.Split("|"))
       Dim cnt As Integer
       If sLines IsNot Nothing Then
          'your code
          cnt = sLines.Count
       Else
          'your code
           cnt = 0
       End If
      

      注意:如果你想处理空格(Dim s As String = " "),只需像这样使用trim()

      IIf(Trim(s) = String.Empty, Nothing, s.Split("|"))

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-05-20
        • 1970-01-01
        • 2018-03-18
        • 1970-01-01
        • 1970-01-01
        • 2021-12-21
        • 2014-10-01
        相关资源
        最近更新 更多