連載
» 2004年02月27日 05時00分 公開

.NET TIPS:文字列に特定の文字列が含まれているかを調べるには?

[遠藤孝信,デジタルアドバンテージ]
.NET TIPS
Insider.NET


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

連載目次

 ある文字列の部分文字列として特定の文字列が含まれているかどうかを調べるには、Stringクラス(System名前空間)のIndexOfメソッドを用いればよい。

 IndexOfメソッドは本来、ある文字列において、パラメータで指定した検索文字列が最初に見つかった位置を得るためのものだ。もし検索文字列が見つからなかった場合には、戻り値は-1となる。よって、IndexOfメソッドの戻り値が0以上かどうかをチェックすれば、文字列が含まれているかどうかを調べることができる。

 次に示すサンプル・プログラムでは、文字列が含まれているかどうかを調べる機能をHasStringメソッドとしてまとめている。

// hasstring.cs

using System;

public class HasStringSample {

  static bool HasString(string target, string word) {
    if (word == "")
      return false;
    if (target.IndexOf(word) >= 0) {
      return true;
    } else {
      return false;
    }
  }

  static void Main() {
    string str = "ろうにゃくなんにょ";
    Console.WriteLine(HasString(str, "にゃく")); // 出力:True
    Console.WriteLine(HasString(str, "にゃん")); // 出力:False
    Console.WriteLine(HasString(str, ""));       // 出力:False
  }
}

// コンパイル方法:csc hasstring.cs

文字列に特定の文字列が含まれているかを調べるC#のサンプル・プログラム(hasstring.cs)
hasstring.csのダウンロード

' hasstring.vb

Imports System

Class HashStringSample
  Shared Function HasString(ByVal target As String, ByVal word As String) As Boolean
    If word = "" Then
      Return False
    End If
    If target.IndexOf(word) >= 0 Then
      Return True
    Else
      Return False
    End If
  End Function

  Shared Sub Main()
    Dim str As String = "ろうにゃくなんにょ"
    Console.WriteLine(HasString(str, "にゃく")) ' 出力:True
    Console.WriteLine(HasString(str, "にゃん")) ' 出力:False
    Console.WriteLine(HasString(str, ""))       ' 出力:False
  End Sub
End Class

' コンパイル方法:vbc hasstring.vb

文字列に特定の文字列が含まれているかを調べるVB.NETのサンプル・プログラム(hasstring.vb)
hasstring.vbのダウンロード

 1つ注意が必要な点は、IndexOfメソッドはパラメータに空文字列("")を指定した場合には0を返すことだ(これは文字列が検索文字列で始まっている場合と区別がつかない)。上記のサンプル・プログラムでは、検索文字列が空文字列の場合には「含まれていない」と判断するようにしている。

カテゴリ:クラス・ライブラリ 処理対象:文字列
使用ライブラリ:Stringクラス(System名前空間)


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

.NET TIPS

Copyright© Digital Advantage Corp. All Rights Reserved.

RSSについて

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

メールマガジン登録

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