C#、.NET 3.5 を使用しています。次のコードがあります
string.Compare("KHA","KTB",true)
値 1 が返されました。これは、アルファベット順で KHA > KTB であることを意味します。値 -1 を返すと思います。
誰でもこれを修正するのを手伝ってもらえますか?
はい、皆さんそうです。それは文化のせいです。CultureInfo.InvariantCulture を追加して解決しました。皆さんありがとう!
C#、.NET 3.5 を使用しています。次のコードがあります
string.Compare("KHA","KTB",true)
値 1 が返されました。これは、アルファベット順で KHA > KTB であることを意味します。値 -1 を返すと思います。
はい、皆さんそうです。それは文化のせいです。CultureInfo.InvariantCulture を追加して解決しました。皆さんありがとう!
strig.Compareは、ソート順での相対位置を返します。「H」は「T」の前に来るので、それがあなたが得ている理由です1
戻る必要が-1
あります , 画像を参照してください
コンパイラで何か問題が発生しているはずです。コンパイラは戻ってくるはずで-1
あり、あなたの理解string.Compare
は正しいです。
以下を使用してみてくださいCultureInfo.InvariantCulture
:
int value = string.Compare("KHA", "KTB", true,CultureInfo.InvariantCulture);
もしあなたが本当に反対されstring.Compare("KHA","KTB",true)
ているのなら、あなたのシステムの現在の文化が効果を上げているに違いありません。String.Compareのドキュメントを確認してください。また、文字列を比較するベスト プラクティスについては、こちらを参照してください。
呼び出しは期待どおりstring.Compare("KHA","KTB",true)
に返さ-1
れるはずです。テストしたらそうなります。
他の結果が得られた場合は、他の文字列を使用しているか、'T'
実際には が前に来ると見なされるデフォルトのカルチャがあります'H'
。
後者の場合、呼び出しでカルチャ情報を指定できます。
string.Compare("KHA", "KHB", true, CultureInfo.InvariantCulture)