Quel est le moyen le plus rapide de convertir une gamme de flotteurs en chaîne en C #? P>
Si mon tableau contient ce tableau Ensuite, je veux que chaque entrée convertie en une chaîne avec une valeur séparée par un espace blanc, c'est-à-dire {0.1, 1.1, 1.0, 0,2} code> p>
"0,1 1.1 1,0 0,2" p> p> P>
5 Réponses :
Vous pouvez le faire comme ceci:
var floatsAsString = yourFloatArray.Select(f => f.ToString(CultureInfo.CurrentCulture));
public static string FloatFToString(float f) { return f.ToString(); } float[] a = { 1.0f, 2.1f }; var res = Array.ConvertAll(a, new Converter<float, string>(FloatFToString));
J'irais pour le fichier la plus lisible.join code> qui devrait également avoir une performance suffisante dans la plupart des cas. Sauf s'il y a un vrai problème, je ne dirais pas la mienne:
float[] values = { 1.0f, 2.0f, 3.0f };
string s = string.Join(" ", values);
Probablement, il va juste appeler float.tostring () code> pour chaque élément du tableau
Ne compile pas. Dit "Rejoindre" a des arguments invalides.
@ABATISHCHEV: Oui, ce sera, puis il utilise un constructeur de cordes pour concaténer les éléments. Si vous avez besoin de formatage spécifique, votre réponse offre toutes les possibilités.
@Wajih: Désolé, j'ai oublié de le vérifier, mais ma solution ne fonctionne que avec .NET 4.0.
Cette réponse est lisible. La réponse "cochée" n'est pas.
@Wajih: Si vous en avez besoin pour travailler dans des versions plus anciennes de .NET, alors do
Pour être plus explicite, appelez float.tostring () code> manuellement, puis
string.join () code> Pour séparer chaque résultat avec un espace:
var array = new float[] { 0.1, 1.1, 1.0, 0.2 };
string result = String.Join(" ", array.Select(f => f.ToString(CultureInfo.CurrentCulture));
Cela semble être la réponse la plus complète.
J'aime approcher avec
7 commentaires
Mec, tu es l'homme, merci effectivement !!!
En utilisant
@Abatishchev alors, quelle est la meilleure façon?
Mine ou @ 0xa3's Way, je suppose. Parce que
@Abatishchev merci pour info, je ne savais pas que String.Join utilise Stringbuilder en interne.
Vous pouvez étudier de telles choses en utilisant Redgate .NET réflecteur
Aussi jusqu'à ce que
string.concat code> et
string.format code> définitivement est très inefficace
string.join code> utilise
stringbuilder code> en interne, c'est beaucoup plus efficace en raison de l'immuabilité des chaînes dans .NET.
tableau code> n'a pas sa propre méthode
agrégate code> il n'est pas nécessaire d'appeler
asen-témoine code> car
tableau code> est déjà
iEnumerable code>
Pouvez-vous décrire le résultat que vous attendez?
Que signifie "le plus rapide"? Performance d'exécution (quelle cible?), Moins de lignes de code, le code le plus lisible, etc ...
Juste besoin de quelque chose qui me fait éviter les boucles