Google
 
Web このブログ

2005年03月24日

文字列を抜き出す汎用関数

MSACCESS
◇文字列の中から文字列1と文字列2ではさまれた部分を抜き出す関数
  pfStrExtract()

ある文字より前の部分がほしい、後ろの部分がほしい、
ふたつの文字ではさまれた部分が知りたいという時。

InStrMidで関数を自作してたのですが、
いっそまとめてしまえということで作ったのがこの関数です。
 
例えば、『大阪府大阪市東住吉区長居公園』という住所から、
区の名前を抜き出すことがきでます。

 ? pfStrExtract("大阪府大阪市東住吉区長居公園","大阪市","区")
→ 東住吉


文字列1が長さ0の文字だと、元の文字列の左端から文字列2の手前までが返ります。
文字列2が長さ0の文字だと、文字列1の次から元の文字列の右端までが返ります。

次のようにすれば、カレントファイルのあるドライブ名が返ります。

 ? pfStrExtract(pfStrExtract(CurrentDb.name,"",":")
→ C


pfStrExtract( pStrX , [ pStr1 ] , [ pStr2 ] , [ pComp ] )

 Input
pStrX:(必須)対象となる文字列
pStr1:(省略可)検索する文字列1
 省略時は長さ0の文字列です
pStr2:(省略可)検索する文字列2
 省略時は長さ0の文字列です
pComp:(省略可)評価に使用する文字列比較モードを指定
 省略時はvbBinaryCompareです
 vbBinaryCompare:0:バイナリモードで比較
 vbTextCompare:1:テキストモードで比較
 vbDatabaseCompare:2:データベースの設定で比較
 Output
なし
 Return
抽出された結果の文字列が返ります

-------------- サンプルコード --------------
Public Function pfStrExtract _
(pStrX, Optional pStr1 As String = "", _
Optional pStr2 As String = "" , _
Optional pComp As Long = vbBinaryCompare) As String

Dim tmpPos As Long
Dim tmpStr As String

tmpPos = InStr(1, pStrX, pStr1, pComp)
If tmpPos = 0 Then
Exit Function
End If

tmpStr = Mid(pStrX, tmpPos + Len(pStr1))
If pStr2 = "" Then
pfStrExtract = tmpStr
Else
tmpPos = InStr(1, tmpStr, pStr2, pComp)
If tmpPos = 0 Then
pfStrExtract = ""
Else
pfStrExtract = Mid(tmpStr, 1, tmpPos - 1)
End If
End If

End Function

汎用性が高いので、ひとつ用意しておけば、文字列操作が楽にコーディングできるようになります。


このネタが役に立ったらポチッとな→人気blogランキングへ
posted by Picaso at 00:11 | Comment(1) | TrackBack(0) | MS Access - Tips
この記事へのコメント
グッチ バッグ 通販
Posted by christian ルブタン at 2013年07月22日 06:39
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

この記事へのTrackBack URL

×

この広告は1年以上新しい記事の投稿がないブログに表示されております。