大文字/小文字を区別しないで文字列を比較するには?[C#、VB].NET TIPS

» 2007年07月26日 05時00分 公開
[遠藤孝信デジタルアドバンテージ]

この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。

「.NET TIPS」のインデックス

連載目次

 大文字/小文字を区別せずに2つの文字列を比較する場合、比較的よく見掛けるコードは次のようなif文だ。

if (strA.ToLower() == strB.ToLower()) {
  //
  // (大文字/小文字の違いはあるかもしれないが)
  // strAとstrBは同じ
  //
}

If strA.ToLower() = strB.ToLower() Then
  '
  ' (大文字小文字の違いはあるかもしれないが)
  '  strAとstrBは同じ
  '
End If

ToLowerメソッドを使用した文字列の比較(上:C#、下:VB)

 このif文では、Stringクラス(System名前空間)のToLowerメソッドにより、両方の文字列をまず小文字にしてから比較している(もちろん、ToUpperメソッドにより両方を大文字にしてから比較してもよい)。

 Stringクラスには文字列を比較するためのCompareメソッドも用意されている。このメソッドにより大文字/小文字を区別せずに文字列を比較するには、次のようにして行う。

if (String.Compare(strA, strB, true) == 0) {
  //
  // (大文字小文字の違いはあるかもしれないが)
  // strAとstrBは同じ
  //
}

If String.Compare(strA, strB, True) = 0 Then
  '
  ' (大文字/小文字の違いはあるかもしれないが)
  '  strAとstrBは同じ
  '
End If

Compareメソッドを使用した文字列の比較(上:C#、下:VB)

 このCompareメソッドでは、第3パラメータにtrueを指定することによって、大文字/小文字の区別なしに文字列を比較できる。

 これら2つのif文は機能的には同等だが、速度的には大きな差がある。次のサンプル・プログラムは、それぞれのif文を100万回ずつ実行して、それにかかる時間を調べている。

Copyright© Digital Advantage Corp. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。