首頁 > 後端開發 > C++ > 如何使用 LINQ 對帶有數字後綴的字母數字字串正確排序?

如何使用 LINQ 對帶有數字後綴的字母數字字串正確排序?

Barbara Streisand
發布: 2025-01-03 03:47:42
原創
756 人瀏覽過

How Can I Sort Alphanumeric Strings with Numeric Suffixes Correctly Using LINQ?

使用LINQ 進行字母數字排序

使用LINQ 的預設排序機制對字母數字字串(其中每個元素以數字值結尾)進行排序可能具有挑戰性。僅依靠字母順序排序時就會出現問題,導致意外的排序輸出。

考慮以下字串陣列:

string[] partNumbers = new string[] { "ABC10", "ABC1", "ABC2", "ABC11", "ABC10", "AB1", "AB2", "Ab11" };
登入後複製

直接應用 LINQ 的 OrderBy 方法將產生以下排序輸出:

AB1
Ab11
AB2
ABC1
ABC10
ABC10
ABC11
ABC2
登入後複製

這個結果與期望的結果有偏差,因為沒有考慮最後的數值

為了實現預期的排序,需要在排序鍵中填入字串的數字部分。這可以使用自訂方法來完成,例如 PadNumbers,定義如下:

public static string PadNumbers(string input)
{
    return Regex.Replace(input, "[0-9]+", match => match.Value.PadLeft(10, '0'));
}
登入後複製

此方法將輸入字串中的任何數字序列替換為其填充的等效值。透過在OrderBy 子句中使用此方法,可以有效地標準化數字部分以進行比較:

var result = partNumbers.OrderBy(x => PadNumbers(x));
登入後複製

此方法可確保同等對待數值,無論其長度如何,從而實現所需的字母數字排序:

AB1
AB2
AB11
...
登入後複製

雖然此解決方案假定數字的最大位數,但它提供了一種使用以下方法進行字母數字排序的可靠方法LINQ。

以上是如何使用 LINQ 對帶有數字後綴的字母數字字串正確排序?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板