みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Pages: 1
FileMaker12を使用しています。
ある文字列とある文字列の間を削除するような計算式はあるでしょうか?
例
-----------------------------------------
あああああ<ここから>いいいいい<ここまで>ううううう
↓
あああああううううう
-----------------------------------------
上記の場合、<ここから> と <ここまで> という文字列を
その間にある文字列ごと表示させないようにしたいのです。
それらの文字列は、フィールドの中に最大で各1回ずつしか出現しません。
Subsituteとposition関数を使っていますがうまくいきません。
良い方法は無いでしょうか?
Let ([
start = Position ( text ; "<ここから>" ; 1 ; 1 ) ;
end = Position ( text ; "<ここまで>" ; 1 ; 1 ) + Length ( "<ここまで>" )
] ;
Replace ( text ; start ; end - start ; "" )
)
Let ( VL = Substitute ( text ; [ "<ここから>" ; ¶ ] ; [ "<ここまで>" ; ¶ ] ) ;
GetValue ( VL ; 1 ) & GetValue ( VL ; 3 )
)
Evaluate ( "Let(S=" &
Substitute ( Quote ( text ) ; [ "<ここから>" ; "\" & Let(S=\"" ] ; [ "<ここまで>" ; "\";\"\" ) & \"" ] ) &
";S)" )
削除箇所が複数あっても対応できる式例、
// あああああ<ここから>いい"い¶いい<ここまで>ううううう
//⇒"あああああ"&Left("<ここから>いい\"い\¶いい<ここまで>";0)&"ううううう"
Let([
$txt=Substitute(テキストフィールド;["\"";"\\\""];[¶;"\¶"]);
$st="<ここから>";
$ed="<ここまで>";
$fnc=Substitute("\""&$txt&"\""
;[$st;"\"&Left(\""&$st]
;[$ed;$ed&"\";0)&\""]
)
];
Evaluate($fnc)
)
Offline
なるほど。私のは、元のテキストに改行があるとうまくいかないですね。
ありがとうございます。
実現にこんな色々な方法があるとは思いませんでした。
replace、quart、evaluteなどはほとんど使用したことがないので
もういちど関数辞典を見直してみます。
Pages: 1
[ Generated in 0.007 seconds, 9 queries executed - Memory usage: 511.21 KiB (Peak: 518.18 KiB) ]