11

Java の場合:

"A".compareTo("a"); return -32 //"A" is less than "a".

.Net では、String.CompareTo を使用します。

"A".CompareTo("a"); return 1 //"A" is greater than "a".

.Net では、Char.CompareTo を使用します。

'A'.CompareTo('a'); return -32 //"A" is less than "a".

Java が Unicode テーブル内の位置を使用して文字列文字を比較することは知っていますが、.Net はそうではありません。.Netでどの大文字が小文字よりも大きいかをどのように判断しますか?

String.CompareTo メソッド (文字列)

4

3 に答える 3

2

Java 文字列から

戻り値: 引数文字列がこの文字列と等しい場合は値 0。この文字列が文字列引数より辞書的に小さい場合は 0 より小さい値。この文字列が文字列引数よりも辞書的に大きい場合は、0 より大きい値。

From .Net String.CompareTo

このメソッドは、現在のカルチャを使用して単語 (大文字と小文字およびカルチャを区別する) 比較を実行します。単語、文字列、序数の並べ替えの詳細については、System.Globalization.CompareOptionsを参照してください。

この投稿では、比較タイプの違いについて説明します

ドキュメントでは、すべての比較タイプの違いについて説明しています。

この2つを見ると、CurrentCultureとOrdinal

 StringComparison.Ordinal: 
 LATIN SMALL LETTER I (U+0069) is less than LATIN SMALL LETTER DOTLESS I (U+0131) 
 LATIN SMALL LETTER I (U+0069) is greater than LATIN CAPITAL LETTER I (U+0049) 
 LATIN SMALL LETTER DOTLESS I (U+0131) is greater than LATIN CAPITAL LETTER I (U

 StringComparison.CurrentCulture: 
 LATIN SMALL LETTER I (U+0069) is less than LATIN SMALL LETTER DOTLESS I (U+0131) 
 LATIN SMALL LETTER I (U+0069) is less than LATIN CAPITAL LETTER I (U+0049) 
 LATIN SMALL LETTER DOTLESS I (U+0131) is greater than LATIN CAPITAL LETTER I (U+0049) 

序数は唯一の場所で"i" > "I"あり、したがってJavaのようです

于 2013-06-28T06:36:55.893 に答える
-1

これは、ASCII 文字セットの文字の順序によるものです。これは、プログラムで何らかの形式のデータ操作を行う場合に、本当に理解しておく必要があることです。

グリッド コントロールに並べ替え順序を変更できるプロパティがあるかどうかはわかりません。そうでない場合は、独自の並べ替えサブルーチンを作成する必要があります。

std::sort 関数を、大文字の前にすべての小文字を置くユーザー定義の述語関数と共に使用できます。

于 2013-06-28T06:36:45.187 に答える