我的資料庫按字母順序存盤鍵:
-MmNI8oyb2QE_9V0WdaX \\1st (oldest)
-MmOAFDL9ZPD1gx4SjEU \\2nd
-MmPtIJ1LpFTRbweNWvD \\3rd
-MmPtd0IMuNIEYaPYPgZ \\4th (newest)
此串列中的排序順序是正確的,您可以在此處檢查它是否按字母順序排列。第一個字串最小,然后是第二個、第三個和第四個。
我想比較該串列中的每兩個字串,并獲得正確的結果,例如該特定串列的順序,因此,如果我將第 4 個字串與第 3 個字串進行比較,我將收到第 4 個大于第 3 個的結果.
到目前為止我嘗試過的:使用string.Compare,但是它不適用于我的特定串列,我收到的結果不一致
string first="-MmNI8oyb2QE_9V0WdaX";
string second="-MmOAFDL9ZPD1gx4SjEU";
string third="-MmPtIJ1LpFTRbweNWvD";
string fourth="-MmPtd0IMuNIEYaPYPgZ";
string.Compare(third,fourth) //output: 1
string.Compare(second,third) //output: -1
string.Compare(first,second) //output: -1
(輸出應全部為“1”或“-1”。因為我的串列已排序)我應該使用什么函式而不是比較字串?我還嘗試string.Compare(3rd,4th,false)了一個按案例進行比較的多載,但它沒有幫助,我的猜測是它必須對案例做一些事情
uj5u.com熱心網友回復:
看來您實際上想按序數值(它們的二進制表示)對這些字串進行排序。在這種情況下, StringComparison.Ordinal用作比較型別。
string.Compare(third, fourth, StringComparison.Ordinal)); //output: -27
string.Compare(second, third, StringComparison.Ordinal)); //output: -1
string.Compare(first, second, StringComparison.Ordinal)); //output: -1
奇怪的是,第一次比較產生 -27 而不是 -1。Compare 方法僅指定回傳值將是 <1、0 或 >1,因此這三個輸出本質上(并且在語意上)是相同的結果。
uj5u.com熱心網友回復:
這是一個有趣的現象,可能是由 .NET 執行單詞排序比較引起的,使用加權排序規則將相似的單詞保持在一起(請參閱此處的備注)。
它會導致一些有趣的,如果出乎意料的結果。即使區分大小寫是false:
string.Compare("A", "c", false); // -1
string.Compare("a", "c", false); // -1
string.Compare("E", "c", false); // 1
string.Compare("e", "c", false); // 1
對于使用字符代碼排序的嚴格比較,您需要使用Ordinal比較方法。
// UPPERCASE letters come before lowercase.
string.Compare("A", "c", StringComparison.Ordinal); // -34
string.Compare("a", "c", StringComparison.Ordinal); // -2
string.Compare("E", "c", StringComparison.Ordinal); // -30
string.Compare("e", "c", StringComparison.Ordinal); // 2
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/326783.html
上一篇:如何使用正則運算式匹配Ruby中包含特殊字符的重復模式?
下一篇:替換字符向量中的"
