【问题标题】:VB.NET string.replace() isn't always working as expectedVB.NET string.replace() 并不总是按预期工作
【发布时间】:2013-12-05 15:07:43
【问题描述】:

数据示例:

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

我需要从这些中提取什么:

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

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

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

  • EFT-
  • EFT

我只想知道哪种方式是正确的,这样我就可以将每一行都改成正确的方式。

【问题讨论】:

    标签: vb.net string split


    【解决方案1】:

    不,没有接受字符串的重载。所以你实际上是在使用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

    【讨论】:

    • 对不起我的无知我应该在哪里设置OPTION STRICT off
    • @skmasq:您可以在顶部的文件中设置它:Option Strict On,在项目设置中或全局设置(推荐)。因此,您必须在 Visual Studio 中更改它。 stackoverflow.com/questions/5160669/…
    • 如果这个.vb是在IIS运行时编译的怎么办?
    • @skmasq:没关系。只需在项目中更改它或默认并编译您的项目。恐怕您必须先修复许多错误。然后部署它就可以了。
    猜你喜欢
    • 2017-06-14
    • 2016-01-03
    • 2015-09-11
    • 1970-01-01
    • 1970-01-01
    • 2019-05-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多