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

特定の文字と文字の間の文字を摘出したい

分類:[.NET]

特定の文字(自分は,を使ってます)と特定の文字の間の文字を摘出するにはどうすればよいのでしょうか。
mid関数とinstr関数で摘出しようとしているのですがなかなかうまくいきません。
他に良い関数はないのでしょうか?
System.Text.RegularExpressionsを調べてみると嬉しくなるかも。
■No14242に返信(mさんの記事)
> 特定の文字(自分は,を使ってます)と特定の文字の間の文字を摘出するにはどうすればよいのでしょうか。

最短マッチなのか最長マッチなのかも決めないといけませんね。

> mid関数とinstr関数で摘出しようとしているのですがなかなかうまくいきません。
> 他に良い関数はないのでしょうか?

VB 的には適切なメソッドですね。
.NET Framework 的には IndexOf, LastIndexOf, Substring メソッドあたりでしょう。
>特定の文字(自分は,を使ってます)と特定の文字の間の文字を摘出するにはどうすればよいのでしょうか。

VB.NETのお話しですよね?
Split関数を使うのも1つの方法ではないでしょうか?
指定した区切り文字間の文字を、Stringの配列に格納してくれる関数です。
「Split」で検索すると出てきますよ!
複雑な切り出しをしたいなら、
|ω・`)さんの書いてる正規表現での切り出しになると思います。
「(自分は,を使ってます)」とあるので、「カンマで区切る」というルールだけの
簡易CSVをただ分解する、っぽいので、もしそうであれば、
くりんさんのSplit関数(VB)や、String下にあるsplitメソッド。
(※区切りが文字「列」の場合は、splitメソッドの方は非対応。)
もしくは、
じゃんぬねっとさんの「IndexOf, LastIndexOf, Substring メソッドあたり」で自作。
かと。
検索をしてみたのですが、split関数がとても役に立ちそうです。
これは自分のPCではないので、自分のPCに入ってるVB(2005Expressβ2と.net2002)で試してみようと思います。
instr関数を二回やってmid関数で文字を摘出しようなんて考えてた自分はかなりの関数知らずです^^;;(何時間もこれでやろうとしていた)
VB.netの入門書だけで関数や命令やAPIなどの本を持っていないのであまり関数等に関しては詳しくないのが現状です。

みなさまあがりとうございました。(実際にVBで試してみてから解決済みにしようと思います)
■No14255に返信(mさんの記事)
> instr関数を二回やってmid関数で文字を摘出しようなんて考えてた自分はかなりの関数知らずです^^;;(何時間もこれでやろうとしていた)

そうでしょうか。
たとえば、パフォーマンスを要する場合は String.Split ではなく、
InStr (.NET 的には IndexOf, LastIndexOf, Substring) らを使いますね。

メソッドで組んでしまえば、それで一発解決ですし。
最長マッチだとすると 5 分もあれば組めるでしょう。

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