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

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

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

You are not logged in.

Announcement

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


#1 2016-12-31 14:07:15

初心者A
Guest

文字列から特定の文字を抜き出す

あるフィールドにいろんなデータが入っていたとして・・・
「{」と「}」の間にある文字列のみ抜き取る関数を探しているのですが
どのような方法があるでしょうか?
ご教授をよろしくお願いします。

#2 2016-12-31 15:23:23

シャチ
Member

Re: 文字列から特定の文字を抜き出す

Let([$txt=テキスト;
       $p1=Position ( $txt ; "{" ; 1 ; 1 );
       $p2=Position ( $txt ; "}" ; 1 ; 1 );
       $tn=$p2-$p1];
     Middle($txt;$p1;$tn)
     )

Offline

#3 2016-12-31 15:25:32

Hiro
Member

Re: 文字列から特定の文字を抜き出す

"あい{うえ}お" → "うえ" を得る式例、
  ↓
Left("あい";0)&"うえ"&Left("";0)   → "うえ"
  ↓
・ Evaluate( "Left(\"あい\";0)&\"うえ\"&Left(\"\";0)" )   → "うえ"
  ↓
・上記固定式を関数式として生成する式。(複数箇所にも対応)  "あい{うえ}おか{きくけ}こ" → "うえきくけ"
   Evaluate( "Left(\"" & Substitute(あるフィールド; ["{"; "\";0)&\""]; ["}"; "\"&Left(\""]) & "\";0)" )


【補足】
・もし、複数結果は改行リストで得るなら、 (複数件抽出可能、{}内改行は"¶"で表記)
   "あい{うえ}おか{きく¶け}こ" → "{うえ}{きく¶け}" → "うえ" &¶& "きく¶け"
   Let([
      #fnc=("Left(\"" & Substitute(あるフィールド; ["{";"\";0)&\"{"]; ["}";"}\"&Left(\""]) & "\";0)")
   ];
      Substitute(Evaluate(#fnc); [¶;"\¶"];["}{";¶];["{";""];["}";""])
   )

Last edited by Hiro (2017-01-01 13:47:05)

Offline

#4 2016-12-31 18:46:48

シャチ
Member

Re: 文字列から特定の文字を抜き出す

ごめんなさい

Let([$txt=テキスト;
       $p1=Position ( $txt ; "{" ; 1 ; 1 );
       $p2=Position ( $txt ; "}" ; 1 ; 1 );
       $tn=$p2-$p1];
     Middle($txt;$p1+1;$tn-1)
     )

が正しい式です。

Position    //文字の位置を知る関数
Middle      //文字をテキストの途中から取り出す関数
Let            //計算がいくつかに分かれる時に使う関数
が大雑把な関数の使い方です
詳しくはヘルプの関数リファレンスを参照してください

Offline

#5 2017-01-01 13:36:13

Hiro
Member

Re: 文字列から特定の文字を抜き出す

別案でループ計算式で求める方法。(約200件位まで抽出可能、{}内改行は¶で表記)

Let([
   $n=PatternCount(あるフィールド; "{");
   $txt=Substitute(あるフィールド; [¶;"\¶"];["{";¶]);
   $vlt=MiddleValues($txt; 2; $n);
   $fnc=
      "Case(IsEmpty($vlt); $res;
         Let([
            $gvl=GetValue($vlt; 1);
            $add=GetValue(Substitute($gvl; [\"}\"; \"\¶\"]); 1);
            $res=List($res; $add);
            $vlt=MiddleValues($vlt; 2; $n)
         ]; Evaluate($fnc))
      )"
];
   Evaluate($fnc)
)

Offline

#6 2017-01-04 09:16:48

初心者A
Guest

Re: 文字列から特定の文字を抜き出す

ありがとうございます。
コメントが遅れ申し訳ありません、
試させていただきます

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

Board footer

Powered by FluxBB
Modified by Visman

[ Generated in 0.030 seconds, 9 queries executed - Memory usage: 513.31 KiB (Peak: 517.85 KiB) ]