VB.NET string.replace()并不总是按预期工作

skm*_*asq 3 vb.net string split

数据示例:

  • EFT- MONTREAL || 378 STREET AVE
  • EFT TORONTO1 || TESTING 875 RD ADDRESS

我需要从这些中提取:

  • EFT- MONTREAL
  • EFT TORONTO1 (注意:这一行的末尾是额外的空间)

这是正确的提取方式吗?
String.Split(" || ")(0)

问题是,有时我将这些值保存到数据库:

  • EFT-
  • EFT

我只是想知道哪一种方法是正确的,所以我可以将每一行改为正确的一行.

Tim*_*ter 5

不,没有接受字符串的重载.所以你实际上使用的是重载String.Split接受a ParamArray Char().但是这将检查这些字符是否匹配,因此不仅整个子字符串匹配.它与此相同:

 Dim first = text.Split(" "c, "|"c, "|"c, " "c)(0) ' "EFT-"
Run Code Online (Sandbox Code Playgroud)

请改用:

Dim first = text.Split({" || "}, StringSplitOptions.RemoveEmptyEntries)(0)
Run Code Online (Sandbox Code Playgroud)

请注意,您也可以使用StringSplitOptions.None,这不是问题.

String.Split Method(String(), StringSplitOptions)

返回一个字符串数组,该数组包含此字符串中的子字符串,这些子字符串由指定字符串数组的元素分隔.参数指定是否返回空数组元素.

但请注意,您应该设置OPTION STRICTon,然后您的代码甚至不会编译,因为字符串不是Char()隐式的.随着OPTION STRICT off它将被静默转换.

选项默认情况下在VB.NET中严格打开