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

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

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

You are not logged in.

Announcement

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


#1 2020-06-11 15:34:00

pon3
Member

テキストから改行だけの行を削除

よろしくおねがいします。FileMaker18です。
長いテキストから改行だけの行を削除するにはどのようにすればよいでしょうか。


山本


佐藤
鈴木

山本

中村


山本
佐藤
鈴木
山本
中村

Offline

#2 2020-06-11 16:07:13

koeda
Member

Re: テキストから改行だけの行を削除

改行2つ連続を1つにすれば良いのでは?たとえば…

While (
[
  ~text = 元フィールド
];
  PatternCount ( ~text ; "¶¶" );
[
  ~text = Substitute ( ~text ; "¶¶" ; "¶" )
];
  ~text
)

Offline

#3 2020-06-11 16:49:24

pon3
Member

Re: テキストから改行だけの行を削除

そんな方法があるのですね。
koedaさま、ありがとうございます。

Offline

#4 2020-06-11 17:42:15

Hiro
Member

Re: テキストから改行だけの行を削除

終わってますが、

koedaさん#2式は「最後尾の空行」が削除されないのでは?
「空値はリストしない」仕様のList関数で再構成する代案式は如何でしょう。


Let([
   $LOOP=
      "Case(
            $i=PatternCount($txt&Char(13);Char(13))
            ; $res
            ; Let([$i=$i+1;#itm=GetValue($txt;$i); $res=List($res;#itm)]; Evaluate($LOOP))
      ) "
];
   Let([$txt=テキストフィールド;$i=0;$res=Char(0)]; Evaluate($LOOP))
)

Offline

#5 2020-06-11 18:55:08

koeda
Member

Re: テキストから改行だけの行を削除

Hiroさん、ありがとうございます。

実は最後の改行はどうすべきか迷ったのですが、POSIXの「行は改行で終わる」という定義に沿ってそのままにしました。
(最終行が改行で終わらないテキストファイルをエラーとするシステムもあったりするので…)
FileMakerの世界の中では、削除した方がよい場面も多くありそうですね。

私の案は、最後の1文字が改行だったらリムーブするという、安直な以下のような式で差し替えも…
If ( Right ( ~text ; 1 )="¶" ; Left ( ~text ; Length ( ~text )-1 ) ; ~text )

Last edited by koeda (2020-06-11 18:57:49)

Offline

#6 2020-06-11 21:26:40

Shin
Member

Re: テキストから改行だけの行を削除

Let (
    t = Replace ( UniqueValues ( ¶ & text ) ; 1 ; 1 ; "" ) ;
    FilterValues ( text ; t )
)

Offline

#7 2020-06-11 22:09:00

himadanee
Guest

Re: テキストから改行だけの行を削除

連続した改行を1つにするには
Substitute ( text ; [ ¶ ; Char(100002) ] ; [ Char(200001) ; "" ] ; [ Char(100002) ; ¶ ] )

改行以外の文字でも可能。

#8 2020-06-12 00:07:28

Hiro
Member

Re: テキストから改行だけの行を削除

#7 himadanee wrote:

連続した改行を1つにするには
Substitute ( text ; [ ¶ ; Char(100002) ] ; [ Char(200001) ; "" ] ; [ Char(100002) ; ¶ ] )

う~む! 渋い!!^^;;

6桁文字コードが2文字分と解される仕様をうまく利用した絶妙ソリューション!

・   Char(100002) (=Char(1)&Char(2))  ⇒  00001|00002
・   Char(200001) (=Char(2)&Char(1))  ⇒  00002|00001
・   ¶¶ (→ Char(100002)&Char(100002)) ⇒  00001|00002|00001|00002

Offline

#9 2020-06-12 10:14:21

qb_dp
Member

Re: テキストから改行だけの行を削除

himadanee wrote:

連続した改行を1つにするには
Substitute ( text ; [ ¶ ; Char(100002) ] ; [ Char(200001) ; "" ] ; [ Char(100002) ; ¶ ] )

改行以外の文字でも可能。

お~!?
「FileMaker カスタム関数」に登録頂きたい。
https://fm-aid.com/custom-function

Offline

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

Board footer

Powered by FluxBB
Modified by Visman

[ Generated in 0.012 seconds, 9 queries executed - Memory usage: 518.26 KiB (Peak: 523.16 KiB) ]