初心者のFileMaker pro Q&A (旧掲示板)

みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。

1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)

You are not logged in.

Announcement

新しい掲示板は、こちら:https://fm-aid.com/forum/t/filemaker


#1 2014-06-10 07:05:13

Toshi
Member

テキストの抽出

<h3>使用上の注意</h3>から<h3>薬効薬理</h3>までの文字の抽出を次のようにしています(以前、ご教示いただきました)。
しかし、<h3>薬効薬理</h3>がない場合は<h3>臨床試験</h3>に変更、さらに<h3>臨床試験</h3>がない場合は<h3>その他</h3>にしたいのですが、どのようにしたらできるでしょうか。

Let ([
ST = Position (本文 ; "<h3>使用上の注意</h3>" ; 1; 1 ) + 15;
END = Position (本文 ; "<h3>薬効薬理</h3>" ; 1; 1 ) - 1];
Middle (本文 ; ST ; END - ST + 1 )
)

Offline

#2 2014-06-10 08:24:08

Moz
Member

Re: テキストの抽出

ちゃんと考えてないけど(汗)こんな感じでしょうか?
「本文」フィールドへの参照が何度も発生するので Let 内変数にまとめた方が少しだけパフォーマンスがよくなります。

Let ( [
    ~本文 = 本文 ;
    ~Text01 = "<h3>薬効薬理</h3>" ;
    ~Text02 = "<h3>臨床試験</h3>" ;
    ~Text03 = "<h3>その他</h3>" ;
    ~EndText = Case ( PatternCount ( ~本文 ; ~Text01 ) ; ~Text01 ; PatternCount ( ~本文 ; ~Text02 ) ; ~Text02 ; PatternCount ( ~本文 ; ~Text03 ) ; ~Text03 ) ;
    ST = Position ( ~本文 ; "<h3>使用上の注意</h3>" ; 1 ; 1 ) + 15 ;
    END = Position ( ~本文 ; ~EndText ; 1 ; 1 )
] ;
    Middle ( ~本文 ; ST ; END - ST )
) // Let

本文に ~Text01 の "<h3>薬効薬理</h3>" があれば終点テキストは ~Text01、~Text02があれば、、、と考えていき、
終点テキストの取得計算式 => Position ( ~本文 ; ~EndText ; 1 ; 1 ) に ~EndText として終点テキストが入る様にしています。

考え方さえ覚えておけば応用が利くと思います。

Last edited by Moz (2014-06-10 08:27:45)

Offline

#3 2014-06-10 08:58:14

tim
Guest

Re: テキストの抽出

少しだけ、を気にするなら
STより後ろのENDだけが有効なのでは。
PatternCountよりPositionの方がいいでしょう。そうすれば同じ計算2回しなくていいし。

#4 2014-06-10 09:12:42

Moz
Member

Re: テキストの抽出

こうかなあ。参照の回数はあまり減って無いですね。
しかし何をやっているか分かりづらくなった様な(汗)

Let ( [
    ~本文 = 本文 ;
    ~Text01 = Position ( ~本文 ; "<h3>薬効薬理</h3>" ; 1 ; 1 ) ;
    ~Text02 = Position ( ~本文 ; "<h3>臨床試験</h3>" ; 1 ; 1 ) ;
    ~Text03 = Position ( ~本文 ; "<h3>その他</h3>" ; 1 ; 1 ) ;
    ST = Position ( ~本文 ; "<h3>使用上の注意</h3>" ; 1 ; 1 ) + 15 ;
    END = Case ( ~Text01 ; ~Text01 ; ~Text02 ; ~Text02 ; ~Text03 ; ~Text03 )
] ;
    Middle ( ~本文 ; ST ; END - ST )
) // Let

Last edited by Moz (2014-06-10 09:13:39)

Offline

Registered users online in this topic: 0, guests: 1
[Bot] ClaudeBot

Board footer

Powered by FluxBB
Modified by Visman

[ Generated in 0.005 seconds, 7 queries executed - Memory usage: 550.07 KiB (Peak: 582.3 KiB) ]