【问题标题】:I cant convert from string to int我无法从字符串转换为 int
【发布时间】:2016-04-13 19:20:17
【问题描述】:

我正在使用正则表达式从网站上抓取数字,然后我想将其乘以 4。

Dim thepage As String = postreqreader.ReadToEnd

Dim r As New System.Text.RegularExpressions.Regex("Views"">\(....)")
Dim matches As MatchCollection = r.Matches(thepage)

Dim kwota As String

For Each itemcode As Match In matches
    kwota = itemcode.Groups(1).Value
Next

Dim stringToInteger As Integer = Convert.ToInt32(kwota)

之后出现错误:An unhandled exception of type 'System.FormatException' occurred in mscorlib.dll。我不知道怎么做。我正在使用 Microsoft Visual Studio、VB .net。 kwota 变量包含 15.2 作为字符串。

【问题讨论】:

  • 您正在创建一个 int (stringToInteger) 并将其分配给 textbox1.text(这是一个字符串)。
  • 问题是,即使我删除分配给文本框也会显示错误
  • 嗯,15.2 肯定不是int,而是double、float 或decimal。
  • 我改成了Dim tehe As Double = Convert.ToDouble(text) 并没有改变任何东西:/
  • 您能否发布所有代码,包括您尝试抓取的网站,并为您检查代码。

标签: .net regex vb.net


【解决方案1】:

Val 函数相当健壮。试试:

Dim stringToInteger As Integer = CInt(Val(kwota))

【讨论】:

  • 哇!它的工作。但是为什么Convert.ToInt32(Convert.ToDouble(kwota)) 或Convert.ToDouble(text) 不起作用?
  • @audiophonic 如果这是解决方案,您应该检查一下
  • @audiophonic FormatException 由 Convert.ToDouble 方法引发。 (Convert.ToInt32 只会引发溢出异常。)我怀疑字符串有一个额外的字符,可能是空格或制表符,Convert.ToDouble 无法处理。 Val 函数可以处理超出数字的额外字符。是的,支票会很好。
  • Val 只能作为最后的手段。这是一种旧的 VB6 方法,已经过时了。它有一些不稳定的副作用,一旦它们潜入您的代码,就很难排除故障。您尝试失败的原因是您试图将15.2 显式转换为整数。该值不是整数,因此它失败。另一方面,Val 转换为最接近的数据类型(在您的情况下可能是单个数据类型),但您无法控制它被转换为的内容。
  • @Jeroen 不太正确。 Convert.Int32 可以毫无问题地接受双精度。 OP 报告该异常是由 Covert.ToDouble 引发的 FormatException。开发人员应检查字符串(他没有提供)以确定在 kwota 中传递的内容。也许 RegEx 可以改进,或者像先修剪它这样的简单修复,可以避免 FormatException。
【解决方案2】:

如果要转换为整数,请将字符串转换为浮点数,然后再转换为整数。

Dim stringToInteger As Integer = Convert.ToInt32(Convert.ToDouble(kwota))

【讨论】:

    【解决方案3】:

    更改您的正则表达式。如果您只有 5 个点,则可以写为:\d+\.\d+,这意味着匹配一个或多个数字,后跟一个文字句点,后跟一个或多个数字。这样你就知道你正在抓取一个数字,而不是那个网页上的任何其他垃圾。

    免责声明:我必须查看 HTML 以查看正则表达式是否“符合目的”。

    【讨论】:

      猜你喜欢
      • 2020-12-12
      • 1970-01-01
      • 2018-05-10
      • 2017-02-04
      • 1970-01-01
      • 2010-10-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多