日本語を意識した部分文字列を検索する

ある文字列の中に、特定の文字(文字列)を含むか調べたいケースはしばしばある。
AnsiString?のPosメソッドを使うと実現できるのだが、例えば「コミュニケーション」という文字列の中に「V」という文字があるかPosメソッドで調べると下記の結果になる。

AnsiString strDAT = "コミュニケーション";
int iPOS;

iPOS = strDAT.Pos("V");
ShowMessage(AnsiString(iPOS));


これを実行すると、「14」という結果が得られることになる。

これは、「V」という文字のASCIIコードが0x56であるのに対して、「シ」という文字のShiftJISコードが0x8356であることから、「シ」の2バイト目を「V」と誤認識しているのである。

こんな時は「AnsiPos?」を使えばよい。

AnsiString strDAT = "コミュニケーション";
int iPOS;

iPOS = strDAT.AnsiPos("V");
ShowMessage(AnsiString(iPOS));

これであれば結果は「0」が返ってくるようになる。


トップ   編集 凍結解除 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2012-12-09 (日) 22:30:52 (3004d)