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

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

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

You are not logged in.

Announcement

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


#1 2019-06-18 10:53:42

pon3
Member

改行区切りのテキストを詰めたい

よろしくお願いします。
FileMaker17です。


ひとつのフィールドに改行区切りでテキストが入っています。
ユニークな値だけのリストにしたいのですが、
改行だけの行をなくして詰める部分がうまくいきません。


Apple
Apple
Orange

KIWI


grape



APPLE
ORANGE
KIWI
GRAPE




現在はこのような式ですが、どのようにすればよいでしょうか。

Let ( [
X = TrimAll ( Upper ( RomanHankaku ( Self ) ); 0; 3 );
X = UniqueValues ( X )
];

X

)

Offline

#2 2019-06-18 11:55:29

Shin
Member

Re: 改行区切りのテキストを詰めたい

Substitute ( Trim ( Substitute ( SortValues ( text ) ; ¶ ; " " ) ) ; " " ; ¶ )
でとりあえずは空行は取りされます。各行の中にスペースが含まれているのでしたら、それを | などに置き換えておき、あとで元に戻します。
項目の順を変えてはいけないのでしたら、さらに、
FilterValues ( text ; Substitute ( Trim ( Substitute ( SortValues ( text ) ;[ " " ; "|" ];[ ¶ ; " " ]) ) ;[ " " ; ¶ ];[ "|" ; " " ]) )
としますが、最後に改行が付加されます。

Offline

#3 2019-06-18 12:43:44

Hiro
Member

Re: 改行区切りのテキストを詰めたい

結構、UniqueValues関数 の「空行」除去は面倒なので、
いっそ昔ながらのループ式が意外とロジック的には単純明快かも?

   Let([
      $lst=テキスト;
      $i=0;
      $res="";
      $FNC="Case($i>PatternCount($lst;\¶); $res;
         Let([
            $i=$i+1;
            #itm=GetValue($lst; $i);
            #add=Choose(Length(FilterValues($res;#itm)); #itm);
            $res=List($res; #add)
            ]; Evaluate($FNC))
         )"
   ];
      Evaluate($FNC)
   )


【補足】
UniqueValues関数の結果から「空行」除去する考えの式も簡単でしたので補足します。

   Substitute(
      Char(8203)& UniqueValues(テキスト) &Char(8203)
      ; ["¶¶"; ¶]
      ; [Char(8203)&¶; ""]
      ; [¶&Char(8203); ""]
      ; [Char(8203); ""]
   )

Last edited by Hiro (2019-06-18 14:04:07)

Offline

#4 2019-06-18 14:39:19

Shin
Member

Re: 改行区切りのテキストを詰めたい

Let (
t = UniqueValues ( ¶ & text ) ;
Middle ( t ; 2 ; Length ( t ) - 2 )
)
がシンプルでしょう。

Last edited by Shin (2019-06-18 14:39:57)

Offline

#5 2019-06-18 15:06:45

Hiro
Member

Re: 改行区切りのテキストを詰めたい

>#4
嗚呼、そうか!御意!

「重複行は先出ユニーク行に移動統合される」仕様を応用できますネ。

Offline

#6 2019-06-19 18:00:04

pon3
Member

Re: 改行区切りのテキストを詰めたい

思っていたよりも難解でびっくりしました。
複雑な考え方をしないといけないのですね。
とても勉強になります。
Shin様、Hiro様、ありがとうございました。

Offline

#7 2019-06-21 20:27:32

Hiro
Member

Re: 改行区切りのテキストを詰めたい

分かり易さよりシンプルさを優先するなら、
こんなギミックな式でも良い?

Substitute(¶ & UniqueValues(¶ & テキスト); [¶&¶; ""])

Offline

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

Board footer

Powered by FluxBB
Modified by Visman

[ Generated in 0.006 seconds, 9 queries executed - Memory usage: 512.1 KiB (Peak: 516.64 KiB) ]