ページ 11

文字列が含まれているかをチェックする

Posted: 2010年3月15日(月) 14:02
by 真由美
言語はVC++です。

String^ url = "http://www.google.co.jp/";
こういった文字列がありここに「google」が含まれているかを
探す方法はないでしょうか?
調べてみると正規表現?やらなんたらが出てきたのですが
それらしい関数が見つかりませんでした・・・。

Re:文字列が含まれているかをチェックする

Posted: 2010年3月15日(月) 14:14
by Blue
String.IndexOf メソッド (String)
http://msdn.microsoft.com/ja-jp/library ... 80%29.aspx

Re:文字列が含まれているかをチェックする

Posted: 2010年3月15日(月) 18:25
by 真由美
ご回答ありがとうございます。
ご丁寧にURLをありがとうございます。
そのメソッドを使ってみたのですが一文字ずつ検索されてしまっているようです・・・。

下記の様に書くとg、o、l、eのどれかが含まれているとif内に飛んでくれません・・・。
この文字列が含まれていたら処理をする~みたいに書きたいのですが
この関数では出来ないのでしょうか?

if(url->IndexOf("google") != -1 ){
}

お手数おかけいたしますが
ご回答頂けますと助かります。

Re:文字列が含まれているかをチェックする

Posted: 2010年3月15日(月) 20:17
by ジュンヤ
文字列が含まれているかチェックするサンプルを書いてみました。
#include <iostream>
#include <string>
using namespace std; 

int main()
{
    string str1( "aiueo google kakikukeko" );
    unsigned int loc = str1.find( "google", 0 );
    if( loc != string::npos )
      cout << "googleの位置は " << loc << endl;
    else
      cout << "googleは見つかりませんでした" << endl;

    return 0;
}
find()を使えば対象となる文字列から、調べたい文字列を検索することができます。
第一引数は、調べたい文字列で、第二引数は、検索を開始する位置です。

検索に成功したなら、戻り値として最初に文字列が現れた場所を返し、失敗したなら
string::nposを返します。
今回は、場所まで検索してますが、文字が存在するかどうかだけでよいなら、
if( str1.find( "google", 0 ) != string::npos )としてもよいと思います。

Re:文字列が含まれているかをチェックする

Posted: 2010年3月15日(月) 20:46
by Justy
>下記の様に書くとg、o、l、eのどれかが含まれているとif内に飛んでくれません・・・
 IndexOfでうまくいくはずなんですけど。

[color=#d0d0ff" face="monospace]
String^ url = "http://www.google.co.jp/";
if(url->IndexOf("google") >= 0)
{
System::Windows::Forms::MessageBox::Show("google");
}
[/color]


 上記のコードを実行して、メッセージボックスが現れませんか?