TextExtraction 関数
カテゴリー : テキスト処理計算結果のデータタイプ : テキスト
対応FileMakerバージョン :










作者 : 社本修司 株式会社ジェネコム
概要
指定したテキストから任意のテキスト間の文字列を返します。構文
TextExtraction ( テキスト ; 開始テキスト ; 開始テキスト回数 ; 終了テキスト ; 終了テキスト回数 )
引数
引数名 | タイプ | 備考 | 例 |
---|---|---|---|
テキスト | テキスト | 商品番号: 0001 商 品 名 : りんご 価 格: 200円 商品番号: 0002 商 品 名 : 梨 価 格: 100円 | |
開始テキスト | テキスト | 商 品 名 : | |
開始テキスト回数 | 数字 | 開始テキストの何回目かの数値 | 2 |
終了テキスト | テキスト | ¶ | |
終了テキスト回数 | 数字 | 終了テキストの何回目かの数値 | 1 |
例
TextExtraction ( "商品番号: 0001¶商 品 名 : りんご¶価 格: 200円¶商品番号: 0002¶商 品 名 : 梨¶価 格: 100円" ; "商 品 名 : " ; 2 ; "¶" ; 1 )
結果
梨
式
/*==============================================================
カスタム関数 TextExtraction ( テキスト ; 開始テキスト ; 開始テキスト回数 ; 終了テキスト ; 終了テキスト回数 )
指定したテキストから任意のテキスト間の文字列を返します。
<テキスト>の中から指定された<開始テキスト回数>番目の<開始テキスト>の次の文字列から
その開始テキスト以降に現れる<終了テキスト回数>番目の<終了テキスト>までの文字列を返します。
=============================================================*/
Let (
[
TEXT = テキスト;
STARTINGTEXT = 開始テキスト ;
NUMBEROFSTARTINGTEXTS = 開始テキスト回数 ;
ENDINGTEXT = 終了テキスト ;
// 終了テキストが開始テキストに含まれている場合その数だけをプラス
NUMBEROFENDINGTEXTS = 終了テキスト回数 + PatternCount ( STARTINGTEXT ; 終了テキスト ) ;
//----------------------------------------------------------------------
// 抽出するテキストの先頭文字位置
//----------------------------------------------------------------------
SP = Position ( TEXT ; STARTINGTEXT ; 1 ; NUMBEROFSTARTINGTEXTS ) + Length ( STARTINGTEXT ) ;
//----------------------------------------------------------------------
// 終了テキストの文字位置
//----------------------------------------------------------------------
EP = Position ( TEXT ; ENDINGTEXT ; Position ( TEXT; STARTINGTEXT; 1; NUMBEROFSTARTINGTEXTS ) ; NUMBEROFENDINGTEXTS ) ;
//----------------------------------------------------------------------
// 抽出するテキストの文字数
//----------------------------------------------------------------------
NC = EP - SP
] ;
Case (
// Text中にstartingTextがNumberOfStartingTexts回以上存在するか
// StartingText以降のText中にEndingTextが終了テキスト回数以上存在するか
// (NumberOfEndingTexts回ではなく終了テキスト回数)
PatternCount ( TEXT ; STARTINGTEXT ) ≥ NUMBEROFSTARTINGTEXTS
and PatternCount ( Middle ( TEXT ; SP ; Length ( TEXT ) - SP + 1 ) ; ENDINGTEXT ) ≥ 終了テキスト回数 ;
Middle ( TEXT ; SP ; NC )
)
)
// ©2004,SHAMOTO Syuji <http://www.FMPro.jp>
カスタム関数 TextExtraction ( テキスト ; 開始テキスト ; 開始テキスト回数 ; 終了テキスト ; 終了テキスト回数 )
指定したテキストから任意のテキスト間の文字列を返します。
<テキスト>の中から指定された<開始テキスト回数>番目の<開始テキスト>の次の文字列から
その開始テキスト以降に現れる<終了テキスト回数>番目の<終了テキスト>までの文字列を返します。
=============================================================*/
Let (
[
TEXT = テキスト;
STARTINGTEXT = 開始テキスト ;
NUMBEROFSTARTINGTEXTS = 開始テキスト回数 ;
ENDINGTEXT = 終了テキスト ;
// 終了テキストが開始テキストに含まれている場合その数だけをプラス
NUMBEROFENDINGTEXTS = 終了テキスト回数 + PatternCount ( STARTINGTEXT ; 終了テキスト ) ;
//----------------------------------------------------------------------
// 抽出するテキストの先頭文字位置
//----------------------------------------------------------------------
SP = Position ( TEXT ; STARTINGTEXT ; 1 ; NUMBEROFSTARTINGTEXTS ) + Length ( STARTINGTEXT ) ;
//----------------------------------------------------------------------
// 終了テキストの文字位置
//----------------------------------------------------------------------
EP = Position ( TEXT ; ENDINGTEXT ; Position ( TEXT; STARTINGTEXT; 1; NUMBEROFSTARTINGTEXTS ) ; NUMBEROFENDINGTEXTS ) ;
//----------------------------------------------------------------------
// 抽出するテキストの文字数
//----------------------------------------------------------------------
NC = EP - SP
] ;
Case (
// Text中にstartingTextがNumberOfStartingTexts回以上存在するか
// StartingText以降のText中にEndingTextが終了テキスト回数以上存在するか
// (NumberOfEndingTexts回ではなく終了テキスト回数)
PatternCount ( TEXT ; STARTINGTEXT ) ≥ NUMBEROFSTARTINGTEXTS
and PatternCount ( Middle ( TEXT ; SP ; Length ( TEXT ) - SP + 1 ) ; ENDINGTEXT ) ≥ 終了テキスト回数 ;
Middle ( TEXT ; SP ; NC )
)
)
// ©2004,SHAMOTO Syuji <http://www.FMPro.jp>
エンコードは Unicode (UTF-8)、改行タイプは LF (Unix) 形式のテキストとして保存します。
テキストエディタで正常に開かない場合は、エンコードを指定してファイルを開くようにしてください。
詳細説明
指定したテキストから任意のテキスト間の文字列を返します。<テキスト>の中から指定された<開始テキスト回数>番目の<開始テキスト>の次の文字列から
その開始テキスト以降に現れる<終了テキスト回数>番目の<終了テキスト>までの文字列を返します。
Tips: 抽出したいテキストが文末にくる場合に備えて、引数の<テキスト>に<終了テキスト>を<終了テキスト回数>回だけ足しておくと抽出したいテキストの位置を気にしなくてもすみます。
例)上記例の場合、<テキスト> & "¶" にしておけば、TextExtraction ( <テキスト> & "¶" ; "価 格: " ; 2 ; "¶" ; 1 ) でも「100円」がかえってきます。
Tips:
この関数が使用する他のカスタム関数
- なし
この関数を使用する他のカスタム関数
- なし
フィードバック
この関数について何かお気づきの点がありましたら、お気づきの点、ご意見、ご感想などをお知らせください。FMPro.info 事務局経由でカスタム関数の作者に転送させていただきます。なお、いただいたフィードバックにつきましては、FMPro.info 事務局から個別にご返信を差し上げておりません。あらかじめご了承いただくようお願いいたします。
注意:ここで紹介されているカスタム関数をご自分のシステムに組み込んだ場合に発生した問題についてはFMPro.infoは責任を負いません。