11

.NET 文字列関数はIndexOf("blah")大文字と小文字を区別しますか?

私が覚えている限りではそうではありませんが、何らかの理由で、クエリ文字列のテキストがキャメルケース (UserID など) であるアプリにバグがあり、IndexOf("userid").

4

4 に答える 4

21

はい、文字列関数はデフォルトで大文字と小文字が区別されます。通常、必要な文字列比較の種類を示すことができるオーバーロードがあります。これは IndexOf にも当てはまります。大文字と小文字を区別しない方法で文字列のインデックスを取得するには、次のようにします。

string blaBlah = "blaBlah";
int idx = blaBlah.IndexOf("blah", StringComparison.OrdinalIgnoreCase);
于 2009-09-01T20:23:28.527 に答える
11

既存の回答に追加したいことが1つあります(最初はASP.NETについて質問していたため):

Request.QueryString やおそらく Request.Form などの一部の名前/値コレクションでは、大文字と小文字が区別されません。たとえば、次の URL を使用して ASPX ページに移動するとします。

http://server/mypage.aspx?user=admin

次に、次の両方の行が「admin」を返します。

var user1 = Request.QueryString["user"];
var user2 = Request.QueryString["USER"];
于 2009-09-01T21:01:49.540 に答える
1

.NET 文字列の比較では、大文字と小文字が区別されます。ToUpper() などを使用して、比較する前に正規化できます。

于 2009-09-01T20:24:41.363 に答える
0

デフォルトでは大文字と小文字が区別されますが、IndexOf を含むほとんど (すべてではないにしても) には、StringComparison 引数を取るオーバーロードがあります。たとえば、あなたが合格した場合

StringComparison.InvariantCultureIgnoreCase 

IndexOf への StringComparison 引数として、(名前が示すように) 大文字と小文字の違いを無視します

于 2009-09-01T20:27:56.643 に答える