【发布时间】:2018-03-25 17:55:10
【问题描述】:
我正在开发从 html 表中获取数据的软件。所以这一行:
team.SelectSingleNode(".//td[@class='number total won total_won']")?.InnerText.Trim();
返回:""
(我正在使用 html 敏捷包进行 DOM 操作。)
完整的一行是这样的:
Convert.ToInt32(
team.SelectSingleNode(
".//td[@class='number total won total_won']")
?.InnerText.Trim());
这会返回一个异常(格式不正确的异常)。
有办法解决这个问题吗?
【问题讨论】:
-
如果它是一个空字符串,你希望它是什么值?实际上,空字符串不是有效的 int
-
@GiladGreen,如果没有值则该值为0
-
似乎你可以用一个直接的“if”语句来解决这个问题......
-
var str = team.SelectSingleNode(".//td[@class='number total won total_won']")?.InnerText.Trim();var number = str.IsNullOrWhiteSpace ? 0 : Convert.ToInt32(str);是一种可行的方法,如果您希望 null、空或仅空格的字符串表示为零值。 -
就我个人而言,我只是检查它是否为空字符串,如果是则返回 0。您也可以使用 TryParse,如果它无法将内容解析为 int,请将其设置为 0,但在这种情况下如果表格最终包含其他意外数据(例如“八”或“约翰”或您可能真正想知道的其他内容),您将掩盖错误。
标签: c# html-agility-pack