Reputation: 83244
I have a list of string, which is most likely, but not guaranteed to contain a list of numerics, i.e.,
{"1", "6", "2", "21", "89"}
What is the way to sort the string list so that it will always appear in ascending order?
I can't parse the string to numeric first before doing the sorting simply because the string can contain non numeric characters. And I don't want to go through the list and check-cast each component to numerics and do the sorting. Is there already a library existing out there for this purpose?
In the case where we have mix numerics and non-numeric string item, numeric strings always take precedence over the non numeric ones.
Upvotes: 8
Views: 8488
Reputation: 172606
You want to sort elements, just like Windows XP Explorer does with files. See this article on how to do this.
Upvotes: 1
Reputation: 630349
This has been asked before slightly differently, but the same answer still applies, as they have a C# implementation on the same site.
SO Question: Sort on a string that may contain a number
Answer provided by ScArcher2: The Alphanum Algorithm
Upvotes: 8
Reputation: 4213
If this is C#, that's what Int32.TryParse() is for.
If this is C++, then std::string::find_first_not_of is a decent bet. Pass it a string containing the ascii chars for the digits 0 to 9 (plus the minus and plus signs?) and if it returns -1 then it is an integer.
Upvotes: 0