Comment puis-je convertir le iEnumerable [] code> afin que je puisse l'utiliser avec string.join?
6 Réponses :
string[] result = nonLetters.Select(c => new string(new[] { c })).ToArray();
Cela ne produit pas de chaîne [] comme Edward demandé.
string[] foo = nonLetters.Select(c => c.ToString()).ToArray();
Il suffit de sélectionner une chaîne au lieu d'un caractère de chacune de votre non-lettre.
String() nonLetters = message.Where(x => !Char.IsLetter(x))
.Select(x => x.ToString())
.ToArray();
Notez que vous n'avez besoin que de le faire dans l'appel à String.join - avec ce code, l'appel de Count () se retrouvera à la conversion de chaque caractère en une chaîne inutile. (Sinon, vous pouvez appeler TOLIST pour uniquement calculer les résultats une fois.)
Vous avez raison, n'a pas pensé à l'appel .Count (). La solution la plus optimale serait d'ajouter le .totarray () avant la console.writeine alors ;-)
Je pense que vous voulez:
string message = "This is a test message.";
var nonLetters = message.Where(x => !Char.IsLetter(x));
Console.WriteLine("There are {0} non-characters in \"{1}\" and they are: {2}",
nonLetters.Count(),
message,
String.Join(", ", nonLetters.Select(x => x.ToString()).ToArray())
);
Si vous ne vous souciez pas d'utiliser String.join mais que vous souhaitez uniquement le résultat, en utilisant string message = "This is a test message.";
string nonLetters = new string(message.Where(x => !Char.IsLetter(x)).ToArray());
Console.WriteLine("There are {0} non-characters in \"{1}\" and they are: {2}",
nonLetters.Length,
message,
nonLetters);
avec .NET 4 Vous avez une autre surcharge pour rejoindre. Aussi simple que:
var nonLettersJoined = string.Join(", ", message.Where(x => char.IsLetter(x)));