3 votes

classement du plus petit au plus grand entier

string strArr="5,3,8,1,9,2,0,6,4,7";

J'aimerais réorganiser l'ordre des nombres pour que le résultat ressemble à ce qui suit :

string result ="0,1,2,3,4,5,6,7,8,9";

Une idée ?

20voto

Guffa Points 308133

Diviser, trier et joindre :

string[] nums = strArr.Split(',');
Array.Sort(nums);
string result = String.Join(",", nums);

Ou bien :

string result =
  String.Join(",",
    strArr.Split(',')
    .OrderBy(s => s)
    .ToArray()
  );

Si vous avez une chaîne contenant des nombres plus importants qui doivent être triés numériquement, vous ne pouvez pas les trier en tant que chaînes, comme par exemple "2" > "1000". Vous devez convertir chaque sous-chaîne en un nombre, les trier, puis les reconvertir :

string result =
  String.Join(",",
    strArr
      .Split(',')
      .Select(s => Int32.Parse(s))
      .OrderBy(n => n)
      .Select(n => n.ToString())
      .ToArray()
  );

Ou, comme l'a suggéré mastoj, analyser les chaînes de caractères dans le tri :

string result =
  String.Join(",",
    strArr
      .Split(',')
      .OrderBy(s => Int32.Parse(s))
      .ToArray()
  );

3voto

Tomas Jansson Points 8021

Version abrégée d'une des versions de la réponse de Guffa :

var res = String.Join(",", str.Split(',').OrderBy(y => int.Parse(y)).ToArray());

2voto

Ruel Points 6140

En se séparant et en se rejoignant :

string strArr = "5,3,8,1,9,2,0,6,4,7";
string[] sArr = strArr.Split(',');
Array.Sort(sArr);
string result = string.Join(",", sArr);

0voto

Matt Ellen Points 5270

Vous pouvez créer un string avec le tableau string.split(char[]) méthode.

Avec ce tableau, vous pouvez appeler la fonction Array.Sort(T) qui triera les éléments par ordre numérique croissant (pour votre exemple).

Avec ce tableau trié, vous pouvez appeler la fonction String.Join(string, object[]) pour en faire à nouveau une ficelle.

0voto

Bonshington Points 2111
string arr = "5,3,8,1,9,2,0,6,4,7";
string result = arr.Split(',').OrderBy(str => Int32.Parse(str)).Aggregate((current, next) => current + "," + next);

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