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

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

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

You are not logged in.

Announcement

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


#1 2013-09-19 12:03:53

チクワ
Guest

特定文字列の間を削除するには?

FileMaker12を使用しています。

ある文字列とある文字列の間を削除するような計算式はあるでしょうか?


-----------------------------------------
あああああ<ここから>いいいいい<ここまで>ううううう

あああああううううう
-----------------------------------------

上記の場合、<ここから> と <ここまで> という文字列を
その間にある文字列ごと表示させないようにしたいのです。
それらの文字列は、フィールドの中に最大で各1回ずつしか出現しません。

Subsituteとposition関数を使っていますがうまくいきません。
良い方法は無いでしょうか?

#2 2013-09-19 12:28:20

tatitute
Guest

Re: 特定文字列の間を削除するには?

Let ([
start = Position ( text ; "<ここから>" ; 1 ; 1 ) ;
end = Position ( text ; "<ここまで>" ; 1 ; 1 ) + Length ( "<ここまで>" )
] ;
Replace ( text ; start ; end - start ; "" )
)

#3 2013-09-19 12:31:45

Listist
Guest

Re: 特定文字列の間を削除するには?

Let ( VL = Substitute ( text ; [ "<ここから>" ; ¶ ] ; [  "<ここまで>" ; ¶ ] ) ;
GetValue ( VL ; 1 ) & GetValue ( VL ; 3 )
)

#4 2013-09-19 12:40:12

quoter
Guest

Re: 特定文字列の間を削除するには?

Evaluate ( "Let(S=" &
Substitute ( Quote ( text ) ; [ "<ここから>" ; "\" & Let(S=\"" ] ; [ "<ここまで>" ; "\";\"\" ) & \"" ] ) &
";S)" )

#5 2013-09-19 13:50:00

Hiro
Member

Re: 特定文字列の間を削除するには?

削除箇所が複数あっても対応できる式例、

// あああああ<ここから>いい"い¶いい<ここまで>ううううう
//⇒"あああああ"&Left("<ここから>いい\"い\¶いい<ここまで>";0)&"ううううう"

Let([
 $txt=Substitute(テキストフィールド;["\"";"\\\""];[¶;"\¶"]);
 $st="<ここから>";
 $ed="<ここまで>";
 $fnc=Substitute("\""&$txt&"\""
   ;[$st;"\"&Left(\""&$st]
   ;[$ed;$ed&"\";0)&\""]
  )
];
 Evaluate($fnc)
)

Offline

#6 2013-09-19 15:11:22

Listist
Guest

Re: 特定文字列の間を削除するには?

なるほど。私のは、元のテキストに改行があるとうまくいかないですね。

#7 2013-09-19 17:18:19

チクワ
Guest

Re: 特定文字列の間を削除するには?

ありがとうございます。
実現にこんな色々な方法があるとは思いませんでした。
replace、quart、evaluteなどはほとんど使用したことがないので
もういちど関数辞典を見直してみます。

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

Board footer

Powered by FluxBB
Modified by Visman

[ Generated in 0.009 seconds, 7 queries executed - Memory usage: 509.16 KiB (Peak: 515.88 KiB) ]