C# 如何在int32中转换空字符串?
我正在开发从html表中获取数据的软件。所以这一行:C# 如何在int32中转换空字符串?,c#,html-agility-pack,C#,Html Agility Pack,我正在开发从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']") ?.In
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.TryParse
而不是Convert.ToInt32
int myInt;
if(!int.TryParse(team.SelectSingleNode(".//td[@class='number total won total_won']")?.InnerText.Trim(), out myInt))
{
myInt = 0;
}
我知道,但是我有30多行代码,所以我应该添加很多if条件刚才是伊尔努诺 您可以编写一个助手方法
public static class Converter{
public static int ConvertToInt(string stringAsInt){
int myInt;
return int.TryParse(stringAsInt, out myInt) ? myInt : 0;
}
}
呼叫代码
var parsedInt = Converter.ConvertToInt(team.SelectSingleNode(".//td[@class='number total won total_won']")?.InnerText.Trim());
如果该值是n个空字符串,您希望它是什么?实际上,空字符串不是有效的字符串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,但在本例中,如果表最终包含其他意外数据(例如“8”或“John”或其他您可能想知道的信息),则会掩盖错误。我知道,但我有30多行代码,所以我应该添加很多if条件…@Ilnumeuno:然后把它放在自己的方法中?例如TryGetInt(团队,“.//td[@class='number total won total\u won'])
。坦白地说,如果你有那么多的修剪、解析和内部文本,听起来你应该更早地将其提取到一个方法中…@Ilnumerouno重构你的代码,保持干燥(不要重复你自己)@Ilnumerouno因为这是标准的复制粘贴答案,你可以检查更多的标准副本,就像这样解释说,如果
是可选的。我接受你的答案,但否决票是一种耻辱