首頁 > 後端開發 > C++ > LINQ 如何實現包含數字的字串的正確字母數字排序?

LINQ 如何實現包含數字的字串的正確字母數字排序?

Susan Sarandon
發布: 2024-12-29 06:59:15
原創
899 人瀏覽過

How Can LINQ Achieve Correct Alphanumeric Sorting of Strings Containing Numbers?

使用LINQ 進行字母數字排序

處理包含數值的字串時,LINQ 中的預設字母排序可能無法產生所需的字母排序結果。考慮以下範例:

string[] partNumbers = new string[] 
{ 
    "ABC10", "ABC1","ABC2", "ABC11","ABC10", "AB1", "AB2", "Ab11" 
};

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

預期結果將對字串進行如下排序:

AB1
AB2
AB11
...
登入後複製
登入後複製

但是,實際結果有所不同,因為預設字串排序遵循字典順序。這意味著數值從左到右進行比較,從而導致以下排序:

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

為了實現所需的字母數字排序,我們需要修改比較邏輯。我們可以用特定數量的零填充每個字串的數字部分。這確保了數字值的比較是公平的,無論其長度如何。

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

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

使用此修改後的排序,字串的數字部分根據其填充值進行比較,從而產生以下正確的排序:

AB1
AB2
AB11
...
登入後複製
登入後複製

請注意,此方法假設輸入中的數字有最大位數。如果數字的位數多於指定的填充,則排序可能不準確。

以上是LINQ 如何實現包含數字的字串的正確字母數字排序?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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