String.Split方法创建空数组点

问题描述

我不是专业程序员,只是FYI。

我在拆分字符串时遇到麻烦。所得数组的长度为3,第二个点(索引1)完全为空。

我可以操纵数组以所需的方式工作,但是我宁愿理解为什么这样做的原因并从一开始就对其进行正确编码。

Dim defaultSetting() As String
Dim curSetting as String = "MENU_ITEM_ON_OPEN;;OPTIONAL_LEAVE"

defaultSetting = curSetting.Split(";;")
MsgBox(defaultSetting.Length) 'this is 3
MsgBox(defaultSetting(0)) 'this is as expected "MENU_ITEM_ON_OPEN"
MsgBox(defaultSetting(1)) 'this is empty and I do not kNow why
MsgBox(defaultSetting(2)) 'this is "OPTIONAL_LEAVE" and should be stored in defaultSetting(1)

任何帮助将不胜感激,谢谢。

解决方法

这里的问题是Option Strict设置为Off

使用的Split重载期望ParamArray中的Char
因此,字符串";;"被“无声地”转换为单个字符。

您可以使用以下代码进行检查:

Dim x As Char = ";;"
MsgBox(x)

您想用字符串分割,这意味着您必须使用另一个重载:

defaultSetting = curSetting.Split({";;"},StringSplitOptions.None)
,

多亏了dbasnett发表评论,我才能够找到符合我期望的方式运行的代码,尽管我不太确定为什么有人愿意解释。但是,如果没有,这个问题已经回答了,谢谢。

defaultSetting = testString.Split(CType(";;",Char()),StringSplitOptions.RemoveEmptyEntries)