Linq kullanarak şu şekilde sıralanabilir:
string str = "A1B2C3D4E5";
str = String.Concat(str.OrderBy(c => c));
veya Linq kullanmadan:
string str = "A1B2C3D4E5";
char[] strchars = str.ToCharArray();
Array.Sort(strchars);
str = new string(strchars);
Ancak verdiğiniz örnekte sayılar sonra geliyor. Normalde kod tablolarında sayılar önce olduğundan üsttekilerde sıralama sonucu şöyle olacaktır:
12345ABCDE
Eğer sayıların sonra gelmesini istiyorsanız şöyle bir şey yapılabilir:
string str = "A1B2C3D4E5";
char[] strchars = str.ToCharArray();
Array.Sort(strchars, (a, b) => {
if (Char.IsDigit(a) && !Char.IsDigit(b)) return 1;
if (!Char.IsDigit(a) && Char.IsDigit(b)) return -1;
return a.CompareTo(b);
});
str = new string(strchars);
Aynen sizin verdiğiniz gibi sıralanmasını istiyorsanız (Önce harfler küçükten büyüğe, sonra rakamlar büyükten küçüğe) şöyle bir şey yapabilirsiniz.
string str = "A1B2C3D4E5";
char[] strchars = str.ToCharArray();
Array.Sort(strchars, (a, b) => {
if (Char.IsDigit(a) && !Char.IsDigit(b)) return 1;
if (!Char.IsDigit(a) && Char.IsDigit(b)) return -1;
if (Char.IsDigit(a) && Char.IsDigit(b))
return b.CompareTo(a);
return a.CompareTo(b);
});
str = new string(strchars);