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

时间:2013-12-05 15:07:44

标签: vb.net string split

数据示例:

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

我需要从这些中提取:

  • EFT- MONTREAL
  • EFT TORONTO1(注意:此行的末尾是额外的空格)

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

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

  • EFT-
  • EFT

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

1 个答案:

答案 0 :(得分:5)

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

 Dim first = text.Split(" "c, "|"c, "|"c, " "c)(0) ' "EFT-"

请改用:

Dim first = text.Split({" || "}, StringSplitOptions.RemoveEmptyEntries)(0)

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

String.Split Method(String(), StringSplitOptions)

  

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

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

Option Strict on by default in VB.NET