みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Pages: 1
よろしくおねがいします。FileMaker18です。
長いテキストから改行だけの行を削除するにはどのようにすればよいでしょうか。
山本
佐藤
鈴木
山本
中村
↓
山本
佐藤
鈴木
山本
中村
Offline
改行2つ連続を1つにすれば良いのでは?たとえば…
While (
[
~text = 元フィールド
];
PatternCount ( ~text ; "¶¶" );
[
~text = Substitute ( ~text ; "¶¶" ; "¶" )
];
~text
)
Offline
そんな方法があるのですね。
koedaさま、ありがとうございます。
Offline
終わってますが、
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
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
Let (
t = Replace ( UniqueValues ( ¶ & text ) ; 1 ; 1 ; "" ) ;
FilterValues ( text ; t )
)
Offline
連続した改行を1つにするには
Substitute ( text ; [ ¶ ; Char(100002) ] ; [ Char(200001) ; "" ] ; [ Char(100002) ; ¶ ] )
改行以外の文字でも可能。
連続した改行を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
連続した改行を1つにするには
Substitute ( text ; [ ¶ ; Char(100002) ] ; [ Char(200001) ; "" ] ; [ Char(100002) ; ¶ ] )改行以外の文字でも可能。
お~!?
「FileMaker カスタム関数」に登録頂きたい。
https://fm-aid.com/custom-function
Offline
Pages: 1
[ Generated in 0.012 seconds, 9 queries executed - Memory usage: 518.26 KiB (Peak: 523.16 KiB) ]