みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Pages: 1
<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
ちゃんと考えてないけど(汗)こんな感じでしょうか?
「本文」フィールドへの参照が何度も発生するので 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
少しだけ、を気にするなら
STより後ろのENDだけが有効なのでは。
PatternCountよりPositionの方がいいでしょう。そうすれば同じ計算2回しなくていいし。
こうかなあ。参照の回数はあまり減って無いですね。
しかし何をやっているか分かりづらくなった様な(汗)
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
Pages: 1
[ Generated in 0.005 seconds, 9 queries executed - Memory usage: 550.09 KiB (Peak: 582.33 KiB) ]