49 votes

Retrait supplémentaire des virgules de la chaîne après l'aide de la Chaîne.Joindre à convertir le tableau en chaîne de caractères (C#)

Petite question ici. Je suis la conversion d'un tableau en une chaîne à l'aide de Cordes.Rejoignez. Un petit problème que j'ai est que, dans la matrice de certaines positions d'index sera vide. Un exemple ci-dessous:

array[1] = "Firstcolumn"
array[3] = "Thirdcolumn"

Par l'aide de la Chaîne.Join(",", array);, je vais chercher le suivant:

Firstcolumn,,Thirdcolumn

Remarque le supplément ,. Comment puis-je supprimer les virgules de la chaîne, ou idéalement de ne pas inclure vide indices lors de l'utilisation de la Chaîne.Rejoindre?

86voto

Lasse Espeholt Points 11944

Essayez ceci :):

var res = String.Join(",", array.Where(s => !string.IsNullOrEmpty(s)));

Cela permettra de rejoindre uniquement les chaînes qui n'est pas null ou "".

34voto

mbjdev Points 3702

Une solution simple serait d'utiliser linq, en filtrant les éléments vides avant de les rejoindre.

// .net 3.5
string.Join(",", array.Where(item => !string.IsNullOrEmpty(item)).ToArray());

Dans .NET 4.0 vous pouvez également faire usage de string.IsNullOrWhiteSpace si vous aussi vous souhaitez filtrer les éléments qui sont vides ou consister en l'espace blanc uniquement des caractères (à noter que dans .NET 4.0, vous n'avez pas à appeler ToArray dans ce cas):

// .net 4.0
string.Join(",", array.Where(item => !string.IsNullOrWhiteSpace(item)));

3voto

Andy Rose Points 7987

Vous pouvez utiliser linq pour supprimer les champs vides.

var joinedString = String.Join(",", array.Where(c => !string.IsNullOrEmpty(c));

1voto

Richard J. Ross III Points 33152

Méthode d'Extension:

public static string ToStringWithoutExtraCommas(this object[] array)
{
    StringBuilder sb = new StringBuilder();
    foreach (object o in array)
    {

        if ((o is string && !string.IsNullOrEmpty((string)o)) || o != null)
            sb.Append(o.ToString()).Append(",");
    }

    sb.Remove(sb.Length - 1, 1);

    return sb.ToString();
}

1voto

Even Mien Points 10122

Expression régulière solution:

yourString = new Regex(@"[,]{2,}").Replace(yourString, @",");

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X