ある文字列の部分文字列として特定の文字列が含まれているかどうかを調べるには、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
' 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
1つ注意が必要な点は、IndexOfメソッドはパラメータに空文字列("")を指定した場合には0を返すことだ(これは文字列が検索文字列で始まっている場合と区別がつかない)。上記のサンプル・プログラムでは、検索文字列が空文字列の場合には「含まれていない」と判断するようにしている。
カテゴリ:クラス・ライブラリ 処理対象:文字列
使用ライブラリ:Stringクラス(System名前空間)
Copyright© Digital Advantage Corp. All Rights Reserved.