- 186 名前:ななしへたぐらま ◆XcB18Bks.Y mailto:sage [2008/11/17(月) 22:04:12 ]
- >>162
こんな時こそ正規表現ライブラリを使うべし。 正規表現ライブラリはいろいろありますけど今回はskRegExpで。 日本語のヘルプもあるので比較的使いやすいと思います。 そのものズバリのコードも書いてしまったのですが勉強にならないと思うので 今回は変換したい部分を特定するコードのサンプルだけ。 const cSample = 'I want to convert "→" and "rarr;" into right arrow!'; var exp: TSkRegExp; Converted: string; begin Writeln('Sample:"', cSample, '"'); exp := TSkRegExp.Create; try exp.Expression := '[0-9]+;|[A-Za-z]+;'; // 見つけたいパターンは「,0から9のどれかが1文字以上,;」または「,A〜Zかa〜zが1文字以上,;」 if exp.Exec(cSample) then // 先頭からパターンに一致するところを探せ.もし見つかったなら… repeat Writeln('見つけた!: 「', exp.Match[0], '」 ', exp.MatchPos[0], '文字目から', exp.MatchLen[0], '文字分'); until not exp.ExecNext; // 次を探せ.見つからなかったらループを抜ける. finally exp.Free; end; end. >>168-169 as 演算子によるインターフェースへのキャストはGUIDを付けないと使えないみたいです。 でも今回はそれが原因ではない気もします。
|

|