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

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

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

You are not logged in.

Announcement

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


#1 2017-04-26 11:41:38

salon_hiyake
Member

再帰? 改行区切りの文字列を改行区切りのまま加工したい

あああ
いいい
ううう

という改行区切りの文字列が入っています.(何行あるかはレコードによって違います)

これを,改行区切りのまま

あああ。
いいい。
ううう。

というように,それぞれに同じ文字列を付け加えたいのです. 再帰的にLet関数などを使うことはわかったのですが,不慣れなもので書き方がわかりません. どなたかわかる方,アドバイスをお願いいたします.

Offline

#2 2017-04-26 13:10:44

Hiro
Member

Re: 再帰? 改行区切りの文字列を改行区切りのまま加工したい

> 何行あるかはレコードによって違います
何行あるかによって解法が違います。
Evaluate再帰式の再帰回数が2百数十回程度と低いためです。

●【Evaluateループ式の作例】(ループ回数限界の2百数十行以下)
Let([
   $lst="あああ¶いいい¶ううう";
   $add="。";
   $i=0;
   $res="";
   $fnc="Case($i=ValueCount($lst); $res;
      Let([
         $i=$i+1;
         $itm=GetValue($lst; $i);
         $res=List($res; $itm & $add)
      ]; Evaluate($fnc))
   )"
];
   Evaluate($fnc)
)

●【Substitute繰越変数式による作例】(数値桁数限界の400行以下)
Let([
   $lst="あああ¶いいい¶ううう";
   $add="。";
   $i=0;
   $res="";
   $n=ValueCount($lst);
   $sub="Let([$i=$i+1; $itm=GetValue($lst;$i); $res=List($res;$itm&$add)]; \"\") & ";
   $fnc=Substitute(10^$n-1; [9; $sub]) & "$res"
];
   Case($n; Evaluate($fnc))
)



なお、今回提示事例の解決自体が目的なら、再帰でなくとも制限のない一般式でできます。
●【Substitute式の作例】
Let([
   #lst="あああ¶いいい¶ううう";
   #add="。"
];
   Substitute(#lst & #add; [¶;#add & ¶])
)

Last edited by Hiro (2017-04-26 15:02:17)

Offline

#3 2017-04-26 17:16:04

salon_hiyake
Member

Re: 再帰? 改行区切りの文字列を改行区切りのまま加工したい

すばらしいです。ありがとうございました。
再帰についてはまだよくわかっていないので
コードをよく理解していないのですが、動作しました。
(スクリプトのように途中でちょっと止めて変数の値をチェックしたりできないから難しいですね)

行数はせいぜい4.5行なので上限のことは考えなくても良さそうです。
これからもよろしくお願いします。

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, 9 queries executed - Memory usage: 507.47 KiB (Peak: 518.72 KiB) ]