J'ai une boucle qui construit des champs d'adresse, certains de ces champs peuvent être vides à la fin de la chaîne ma sortie est p> Comment puis-je supprimer la fuite "," de la chaîne? p> p>
7 Réponses :
La méthode statique Trimends de la chaîne permet de spécifier quels caractères doivent être coupés. P>
Toutefois, dans votre cas, il serait logique de vérifier dans la boucle pour que vous ayez des emplacements vides, et à la fin placez une chaîne résultante avec string.join (séparateur de chaîne) P>
Si vous voulez supprimer quelque chose que vous avez ajouté, ne les ajoutez pas en premier lieu. En outre, le type stringbuilder code> est mieux adapté à la concaténation de plusieurs chaînes, car il est beaucoup plus efficace de mémoire. StringBuilder sb = new StringBuilder();
for (int i = 0; i < list.Count; i++)
{
string rowValue = list[iRow];
if (!string.IsNullOrEmpty(rowValue))
{
sb.Append(rowValue);
sb.Append(", ");
}
}
// use sb.ToString() to obtain result
Ce code produira un "", ", vous devez appeler SB.ReMove (Sb.Length-Longueur-2, 2) après la boucle.
Vous devez également éviter d'utiliser des chaînes dans votre cas, utilisez plutôt StringBuilder. Évitez également d'utiliser la mise en forme de senseles -Juste [Irow] est une meilleure option.
Essayez quelque chose comme ça à la place: P>
string result = string.Join(", ",
list.Where(s => !string.IsNullOrEmpty(s)).ToArray());
Je déteste faire des hypothèses, mais je le ferai parce que vous voulez que vous souhaitiez préserver les "lacunes" jusqu'à ce que vous arriviez à la fin, auquel cas vous devriez utiliser Trimend. Sinon, utilisez l'une des autres options pour éviter d'ajouter les valeurs vides en premier lieu. P>
plus précisément si votre sortie pourrait ressembler à: p>
asd, aaa, qwe, 123123 , quelque évalle, , p> blockQuote>
Ensuite, vous devrez faire boucle et utiliser Trimend. P>
Sinon, si vous pouvez réduire les champs, excluez les VIDES. P>
asd, aaa, qwe, 123123, quelqueévalie p> blockQuote>
returnValue = returnValue.TrimEnd(' ', ',');
Le paramètre sur Trimend est un paramorrare que vous n'avez pas besoin d'un nouveau caractère [] - retourvalue = retourvalue.trimend ('', ',');
@NESCIO Merci, je pense que dans la méthode Split, j'utilise régulièrement une matrice de caractère pour dépouiller les valeurs vides, donc j'ai écrit ici par erreur.
Essayez ceci:
List<string> list = new List<string>(
new string[]{"asd", "aaa", "qwe", "123123", "", null, "", null, ""});
return String.Join(", ", list.Where(i => !String.IsNullOrEmpty(i)).ToArray());
Je me rends compte que cela est tout à fait illisible et est gaspillé mais (sans linq):
Pas une bonne solution. Moyen le plus simple de faire ce yonstring.trimend (',', ''); code>
Non, tu ne le fais pas. Vous avez une boucle qui provoque une erreur ArgumentOntofRangeException ...