10
votes

C # Split String en variables distinctes

J'essaie de diviser une chaîne en variables de chaîne distinctes lorsqu'une virgule est trouvée.

string[] dates = line.Split(',');
foreach (string comma in dates)
{
     string x = // String on the left of the comma
     string y = // String on the right of the comma
}


1 commentaires

Avez-vous besoin d'utiliser ces variables en dehors de la portée des foresach?


3 Réponses :


13
votes

Débarrassez-vous du forach dans ce cas.

C'est juste: xxx


5 commentaires

Pour éviter l'erreur d'exécution: string y = dates.length> 1? Dates [1]: "";


@Shadow Wizard: Si les données dans LIGNE sont incorrectes Une erreur d'exécution est probablement meilleure, puis attribuant une valeur aléatoire.


@Peter String vide n'est pas une valeur par défaut aléatoire et commune. "L'indice était en dehors des limites de la matrice" ne signifiera pas grand chose à l'utilisateur final.


@Shadow Wizard: Je ne dis pas que l'utilisateur final devrait voir l'exception. "L'indice était en dehors des limites de la matrice" signifiera beaucoup pour un programmeur en train de lire un fichier journal provenant d'un système qui a échoué dans la production. Avec votre choix de valeur par défaut, vous cachez déjà une erreur, la chaîne vide était déjà dans les données suivantes: "2011-09-11" ou a été générée par l'inline si elle est. Si vous présentez ou non que vous présentez l'utilisateur avec un message du message dépend entièrement de savoir s'il s'agit d'un code d'interface utilisateur ou non.


@Peter Eh bien, je compte sur le OP ici pour utiliser les informations judicieusement .. Je viens de faire avertir que plusieurs fois sont négligés et causant une crash inattendue lorsque la simple valeur par défaut résolve tout cela.



4
votes

Voulez-vous dire comme ça? XXX


0 commentaires

8
votes

Obtenez simplement les chaînes de la matrice: xxx pré>

S'il peut y avoir plus d'une virgule, vous devez spécifier que vous ne voulez que deux chaînes de toute façon: p>

int index = lines.IndexOf(',');
string x = lines.Substring(0, index);
string y = lines.Substring(index + 1);


0 commentaires