首頁 >後端開發 >C++ >如何使用 LINQ 的 OrderBy 方法對包含數字的字串進行正確的字母數字排序?

如何使用 LINQ 的 OrderBy 方法對包含數字的字串進行正確的字母數字排序?

Barbara Streisand
Barbara Streisand原創
2024-12-27 20:51:16881瀏覽

How Can LINQ's OrderBy Method Be Used for Correct Alphanumeric Sorting of Strings Containing Numbers?

使用 LINQ進行字母數字排序:了解數值影響

問題:

給定一個字串數組,其中每個元素都結束使用數值時,目標是按字母數字順序對數組進行排序,並優先考慮其中的數字順序

範例:

考慮字串陣列:

partNumbers = ["ABC10", "ABC1", "ABC2", "ABC11", "ABC10", "AB1", "AB2", "Ab11"]

使用LINQ 的OrderBy 方法,得到想要的排序結果是:

["AB1", "AB2", "AB11", ... ]

問題:

但是,預設排序機制將數字視為字串,導致以下輸出:

["AB1", "Ab11", "AB2", "ABC1", "ABC10", "ABC10", "ABC11", "ABC2"]

解決方案:

修正此問題問題,有必要在排序子句中填入字串的數字部分。這樣,OrderBy 就將數字視為數字,而不是字串。下面的程式碼片段示範了這個方法:

var result = partNumbers.OrderBy(x => PadNumbers(x));

PadNumbers 方法:

PadNumbers 方法實作如下:

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

PadNumbers 方法實作如下:

說明:

此方法辨識並以零填充輸入字串中的所有數字序列,假設最大數字長度為 10。此填色可確保在排序過程中將數值視為數字,同時保留原始字串資料。

輸出:

["AB1", "AB2", "AB11", ... ]

使用PadNumbers方法,陣列已正確排序如下:

透過應用此填充技術,您可以使用LINQ 實現精確的字母數字排序,其中數字值在每個元素內優先排序。

以上是如何使用 LINQ 的 OrderBy 方法對包含數字的字串進行正確的字母數字排序?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn