DOBON.NET DOBON.NETプログラミング掲示板過去ログ

IndexOfがうまく動作しない

環境/言語:[XP, VS2003, C# .NET1.1]
分類:[.NET]

VS2003, C# の環境で、

string aa = "あいう゜えお";
int val = aa.IndexOf("いう");

とすると、valが-1になってしまいますが、
原因と対策が分かる方、ご教授いただけると幸いです。
■No18942に返信(こうささんの記事)

> string aa = "あいう゜えお";
> int val = aa.IndexOf("いう");
> 
> とすると、valが-1になってしまいますが、
> 原因と対策が分かる方、ご教授いただけると幸いです。

どうも仕様のような気がします。
例えば以下のようにすると

string aa = "あいか゛えお";
int val = aa.IndexOf("が");

val に 2 が入りますし、そういうものかもしれません。
(詳しくないのであまり言及できないけど、Unicode 関係の話かな?)

対策…というか、こういう仕様な以上は下のようにベタな方法でやってみる
しかないかもしれないですね。
# あまりにベタすぎて目から汗が orz

string aa = "あいう゜えお";
string bb = "いう";
for (int i = 0; i < aa.Length - bb.Length; i++)
{
    if (aa.Substring(i, bb.Length) == bb)
    {
        MessageBox.Show(i.ToString());
        break;
    }
}

なんかあまり役に立てなくてすいません。

DOBON.NET | プログラミング道 | プログラミング掲示板