2010-02-07 17 views
8

Ho un elenco di stringa, che è più probabile, ma non garantito per contenere un elenco di valori numerici, vale a dire,Ordina lista String con valori numerici

{"1", "6", "2", "21", "89"} 

Qual è il modo per ordinare l'elenco stringa in modo che apparirà sempre in ordine crescente?

Non riesco a analizzare la stringa in base al numero prima di eseguire l'ordinamento semplicemente perché la stringa può contenere caratteri non numerici. E non voglio passare attraverso la lista e controllare il cast di ogni componente in numeri e fare l'ordinamento. Esiste già una biblioteca esistente per questo scopo?

Nel caso in cui sono presenti numeri composti e elementi stringa non numerici, le stringhe numeriche hanno sempre la precedenza su quelle non numeriche.

+1

La frase che stai cercando è "ordinamento naturale". – Ken

risposta

0

Se questo è C#, è ciò che Int32.TryParse() è per.

Se questo è C++, quindi std :: string :: find_first_not_of è una scelta decente. Passa una stringa contenente i caratteri ascii per le cifre da 0 a 9 (più i segni meno e più?) E se restituisce -1, allora è un numero intero.

+2

No, vuole essere in grado di ordinare liste come questa: {a1, a10, a11, a2, a3} in modo naturale: {a1, a2, a3, a10, a11}. TryParse ovviamente non funzionerà. – Steven

1

si desidera ordinare gli elementi, proprio come Windows XP Explorer fa con i file. Vedi this article su come farlo.