首頁 > 後端開發 > C++ > 如何在 LINQ 中使用數字後綴實現字母數字排序?

如何在 LINQ 中使用數字後綴實現字母數字排序?

Patricia Arquette
發布: 2024-12-29 01:29:11
原創
408 人瀏覽過

How Can I Achieve Alphanumeric Ordering in LINQ with Numeric Suffixes?

LINQ 中的字母數字排序

在LINQ 中,OrderBy 方法遵循字典順序規則,該規則按順序考慮字母和數字字符。但是,當以數值結尾的字串進行排序時,這種排序可能不會產生所需的結果。

考慮以下範例:

string[] partNumbers = { "ABC10", "ABC1", "ABC2", "ABC11", "ABC10", "AB1", "AB2", "Ab11" };
var result = partNumbers.OrderBy(x => x);
登入後複製

實際結果,依照字典順序,將是:

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

但是,預期結果是將相似的字母順序分組在一起,無論數字如何後綴。為此,我們需要修改排序標準。

按字母數字排序的關鍵是比較填充的數字部分。透過向數值填充零,我們確保 LINQ 可以正確區分它們。我們可以這樣做:

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

此函數將零填充到輸入字串中的任何數字。透過使用此函數作為LINQ 中的排序標準,我們得到了預期的結果:

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

結果清單現在將排序為:

AB1
AB2
AB11
...
登入後複製

此方法假設最大數字部分的位數是已知的。對於更複雜的情況,請考慮實作自訂 IComparer,它允許對比較標準進行更細粒度的控制。

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

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