【问题标题】:'Conversion from string " >" to type 'Integer' is not valid.''从字符串“>”到类型'Integer'的转换无效。'
【发布时间】:2017-12-03 23:38:59
【问题描述】:

我正在尝试查看源我不需要整数,但它正在尝试转换为整数..

我可能想多了,但这是我的代码

Dim sourceString As String = New System.Net.WebClient().DownloadString("website.html")
Dim value() As String = Split(sourceString, "<option value=", " >")

'从字符串“>”到类型'Integer'的转换无效。'

不是找人来重写我的代码,而是寻找我做错了什么并在可能的情况下进行解释。

谢谢

【问题讨论】:

  • split (` " >" ` ) 的第三个参数应该做什么?是不是打错字了?
  • 使用 HtmlAgilityPack 而不是自己尝试解析 HTML。
  • 您向Split() 传递了三个参数,即使这不是您的本意。 split 的第三个(也是可选的)参数是一个整数,用于限制拆分项目的数量。由于“ >”不是整数,因此您会收到该错误。 @Dai 几乎可以肯定是正确的,因为您自己解析 HTML 既困难又容易出错。有些轮子最好不要重新发明。
  • @JohnColeman 它是 Microsoft.VisualBasic.Strings.Split (它确实需要 3 个参数)msdn.microsoft.com/en-us/library/… (尽管第三个应该是一个 int,因此是错误的)。它不是核心 .net System.String.Split(最多 2 个参数)

标签: arrays vb.net


【解决方案1】:

尝试“正确”的 .net 方式:

  Dim value() as String = sourceString.Split({"<option value=", " >"}, StringSplitOptions.None)

您可能需要考虑从文件顶部删除Imports Microsoft.VisualBasic。您可能会遇到很多编译器错误,但可以修复它们。 VB helper 命名空间对于迁移和想要熟悉的东西的 vb6 程序员最有用;使用它通常只会延续使用 vb6 年期间出现的不良编程实践——如果您热衷于鼓励自己按照预期编写 .net,则实际上没有必要经常使用它

【讨论】:

  • 同样的错误,不知道如何告诉拆分只使用 2 个参数而不是 'string()' 类型的所有 3 个值不能转换为 'char'
  • 这不是完全相同的错误,因为它不是相同的方法,尽管我的建议缺少一个参数,这意味着 string.split 的错误重载被调用;对此感到抱歉 - 立即尝试(修改后的代码)
  • 这可能是最好的主意:解析网页是一件脆弱的事情。如果您使用的服务具有某种形式的 api 或 Web 服务提供,请改用它
猜你喜欢
  • 2015-05-13
  • 2016-12-14
  • 1970-01-01
  • 2022-11-10
  • 1970-01-01
  • 1970-01-01
  • 2018-02-14
  • 2023-03-28
  • 1970-01-01
相关资源
最近更新 更多