C# での文字列比較が少し奇妙に動作するという問題に直面しました。
"0".CompareTo("@") // is 1
ASCII コードが次にあるため、これには非常に驚きました。
ASCII '@' // 64
ASCII '0' // 48
チャットを比較している場合、または String.CompareOrdinal を使用している場合、すべて問題ありません。
'0'>'@' // false
String.CompareOrdinal("0","@") // -16
そしてJSでは期待通りに動作します:
"0" > "@" // false - in Javascript
次に私が変更できない C# コード - CompareTo を使用します。
しかし、Javascript でも同じ並べ替えルールが必要です。ASCII コードが 0 未満であるため、「@」記号を「#」に置き換えるよりも賢い解決策が見つかりません。
ASCII '#' // 35
たぶん誰かが理由を説明できます:
"0".CompareTo("@") // is 1
または、Javascriptで比較を同じにするより良い回避策を提案してください
それは奇妙ではなく、文化特有のものです。私は js の専門家ではありませんが、localeCompareが役立つと思います。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加