1

C#、.NET 3.5 を使用しています。次のコードがあります

string.Compare("KHA","KTB",true)

値 1 が返されました。これは、アルファベット順で KHA > KTB であることを意味します。値 -1 を返すと思います。

誰でもこれを修正するのを手伝ってもらえますか?

はい、皆さんそうです。それは文化のせいです。CultureInfo.InvariantCulture を追加して解決しました。皆さんありがとう!

4

3 に答える 3

2

strig.Compareは、ソート順での相対位置を返します。「H」は「T」の前に来るので、それがあなたが得ている理由です1

戻る必要が-1あります , 画像を参照してください ここに画像の説明を入力

コンパイラで何か問題が発生しているはずです。コンパイラは戻ってくるはずで-1あり、あなたの理解string.Compareは正しいです。

以下を使用してみてくださいCultureInfo.InvariantCulture:

int value = string.Compare("KHA", "KTB", true,CultureInfo.InvariantCulture);
于 2012-08-07T03:29:06.270 に答える
1

もしあなたが本当に反対されstring.Compare("KHA","KTB",true)ているのなら、あなたのシステムの現在の文化が効果を上げているに違いありません。String.Compareのドキュメントを確認してください。また、文字列を比較するベスト プラクティスについては、こちらを参照してください。

于 2012-08-07T03:34:34.710 に答える
1

呼び出しは期待どおりstring.Compare("KHA","KTB",true)に返さ-1れるはずです。テストしたらそうなります。

他の結果が得られた場合は、他の文字列を使用しているか、'T'実際には が前に来ると見なされるデフォルトのカルチャがあります'H'

後者の場合、呼び出しでカルチャ情報を指定できます。

string.Compare("KHA", "KHB", true, CultureInfo.InvariantCulture)
于 2012-08-07T03:34:04.637 に答える