- - PR -
文字列の比較について
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2005-05-12 14:19
いつも、活用させていただいています。
さなです。 C#.Netで文字列の比較をしたいのですが、以下のコードを実行した場合、意図した結果が得られません。 string stra = "A"; int Result = stra.CompareTo("a"); とした場合、文字コードでは A < a が成立するので、Result には -1 が帰って来てほしいのですが、1 ( A > a ) という結果が返ってきます。 C#.NETの CompareTo は C言語などのstrcompの代用としては使えないのでしょうか? C#.NET CompareTo -- aAbBcC の順 C言語 strcomp -- ABC…abc の順 CompareOrdinal だと、上記比較であれば -32 が帰ってくるので、これを使うしかないでしょうか? | ||||
|
投稿日時: 2005-05-12 14:31
どもです。がると申します。
んっと…
これですが、厳密には「ASCIIコード依存」ですよね? C言語のstrcmp(3)もそうですが。基本的には0かnot0か、以上の意味合いを 持たせるのは、環境依存が激しいので非常に危険だと思うのですが どうでしょう? | ||||
|
投稿日時: 2005-05-12 15:09
C言語のstrcmpはどうだったか忘れてしまいました。 単純なchar値の大小比較でしたっけ? .NET Frameworkでは基本Unicodeですから、CompareOrdinalではUnicode値?での引き算値ですかね? 格納されているSystem.Char値の比較で、少なくとも大小順序は決まっています。 ASCIIとUnicodeの値が同じになっているので同じ動作とみなして使うことには問題ないと思います、多分。 ※いや、私あんまりこの辺は明るくないので、おかしなこと言ってるかもしれません。 CompareやCompareToに関しては、カルチャを意識しますから、基本は小文字<大文字になっているみたいですね(この順序もカルチャ依存?てわけではなさげ…?)。 結局のところCompareOrdinalを使う必要があると思います。 |
1