Yazılım.
CevapSitesi.com Beta!
Çözüm Noktası
Facebook, Twitter, Google+ veya e-posta ile paylaşın.
| Sorular | Makaleler | Üyeler | Etiketler  | İletişim
Soru sormak ya da cevap vermek için;
giriş yapın veya üye olun.

Sosyal medya hesaplarınızla da giriş yapabilirsiniz.
0

C# stringi alfabetik olarak sıralama nasıl yapılır?

Örnek olarak: Verilen string:A1B2C3D4E5   İstenilen string:ABCDE54321

Verilen stringi istenilende ki gibi alfabetik olarak c# da nasıl sıralayabilirim.


Soran: 21.05.19 18:33
furkan
4p 1ü

1 Cevap

0
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);


Cevaplayan: 04.06.19 20:05
cevapsitesi
102,034p 15ü