Cara Mengisih Rentetan Mengikut Abjad Semasa Mengekalkan Nilai Angka
Mengisih rentetan mengikut abjad boleh menghadapi cabaran apabila beberapa rentetan mengandungi aksara angka. Jika penukaran angka dilarang, pendekatan alternatif diperlukan untuk mengendalikan kes ini dengan berkesan.
Satu penyelesaian ialah menggunakan pembanding tersuai yang membezakan antara nilai angka dan bukan angka. Pembanding ini boleh dihantar kepada kaedah OrderBy untuk menyesuaikan kriteria pengisihan.
Berikut ialah contoh pelaksanaan menggunakan kaedah Enumerable.OrderBy dan kelas SemiNumericComparer:
using System; using System.Collections.Generic; class Program { static void Main() { string[] things = new string[] { "paul", "bob", "lauren", "007", "90", "101" }; foreach (var thing in things.OrderBy(x => x, new SemiNumericComparer())) { Console.WriteLine(thing); } } public class SemiNumericComparer: IComparer<string> { /// <summary> /// Determine if a string is a number /// </summary> /// <param name="value">String to test</param> /// <returns>True if numeric</returns> public static bool IsNumeric(string value) { return int.TryParse(value, out _); } /// <inheritdoc /> public int Compare(string s1, string s2) { // Flags to indicate if strings are numeric var IsNumeric1 = IsNumeric(s1); var IsNumeric2 = IsNumeric(s2); // Handle numeric comparisons if (IsNumeric1 && IsNumeric2) { var i1 = Convert.ToInt32(s1); var i2 = Convert.ToInt32(s2); // Order by numerical value if (i1 > i2) { return 1; } if (i1 < i2) { return -1; } return 0; } // Handle cases where only one string is numeric if (IsNumeric1) { return -1; } if (IsNumeric2) { return 1; } // Default to alphabetical comparison return string.Compare(s1, s2, true, CultureInfo.InvariantCulture); } } }
Kod ini akan mengeluarkan rentetan dalam susunan diisih berikut:
007 90 bob lauren paul 101
Atas ialah kandungan terperinci Bagaimana Menghurufkan Rentetan dengan Nombor Terbenam Sambil Mengekalkan Susunan Berangka?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!