Comment convertir une chaîne vide en int32?

c# html-agility-pack

Question

Je développe un logiciel qui récupère les données d'une table HTML. Donc cette ligne:

team.SelectSingleNode(".//td[@class='number total won total_won']")?.InnerText.Trim();

renvoie: ""

(J'utilise le pack d'agilité HTML pour la manipulation du DOM.)

Et la ligne complète est la suivante:

Convert.ToInt32(
  team.SelectSingleNode(
    ".//td[@class='number total won total_won']")
  ?.InnerText.Trim());

Cela renvoie une exception (exception de format incorrect).

Une idée pour résoudre ça?

Réponse acceptée

Vous pouvez utiliser int.TryParse au lieu de Convert.ToInt32

int myInt;
if(!int.TryParse(team.SelectSingleNode(".//td[@class='number total won total_won']")?.InnerText.Trim(), out myInt))
{
  myInt = 0;
}

Je sais, mais j'ai plus de 30 lignes de code, alors je devrais ajouter beaucoup de conditions si ... - Ilnumerouno tout à l'heure

Vous pouvez écrire une méthode d'assistance à la place.

public static class Converter{
    public static int ConvertToInt(string stringAsInt){
      int myInt;
      return int.TryParse(stringAsInt, out myInt) ? myInt : 0;
    }
}

Code d'appel.

var parsedInt = Converter.ConvertToInt(team.SelectSingleNode(".//td[@class='number total won total_won']")?.InnerText.Trim());


Related

Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow