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

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

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

You are not logged in.

Announcement

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


#1 2023-06-23 18:27:21

OP
Guest

文字の最後を”…”にして省略する方法はありますか?

印刷するときにフィールドに文字が入りきれない場合、フィールドに入る文字数の最後の文字を”…”に変換する方法はあるでしょうか?
商品名フィールドなので全角半角混在で、全角換算で20文字目にあたる部分を変換したいです
20文字に収まる場合は変換なしにしたいです
半角を0.5 全角を1として計算すればできそうですが何をどうしたらよいのかわかりません

#2 2023-06-23 21:02:20

Shin
Member

Re: 文字の最後を”…”にして省略する方法はありますか?

Let (
[
	hex = HexEncode ( TextEncode ( txt ; "shift_jis" ; 1 ) ) ;
	txt = TextDecode ( HexDecode ( Left ( hex ; 40 ) ; "tmp.bin" ) ; "shift_jis" )
] ;
	txt & Case ( Length ( hex ) > 40 ; "…" )
)

でいいのですが、40バイト目から2バイト文字が入るとエラーになりますので、別途処理が必要です。

Offline

#3 2023-06-26 10:55:55

チポ
Member

Re: 文字の最後を”…”にして省略する方法はありますか?

再起式

Let ( [ $f = フィールド;
          $c = 20 ;
          $L = 1;
          $A = Length ( $f ) ;
          $式 = "Case ( $L > $A ; $l ; $L > 40 ;
                               Left ( $f ; $c-1 ) & ""..."" ;
                               Let ( [ $c = $c + 1 ;
                                         $t = Left ( $f ; $c ) ;
                                         $L = Length ( $t & Filter ( $t ; RomanZenkaku ( KanaZenkaku ( $t ) ) ) ) ] ;
                                        Evaluate ( $式 ) ) )" ];
          Evaluate ( $式 ) )

Offline

#4 2023-06-30 20:37:46

himadanee
Guest

Re: 文字の最後を”…”にして省略する方法はありますか?

Shinさんの式にエラー処理を組み込むと
Let (
[
    hex = HexEncode ( TextEncode ( txt ; "shift_jis" ; 1 ) ) ;
    err = EvaluationError ( TextDecode ( HexDecode ( Left ( hex ; 40 ) ; "tmp.bin" ) ; "shift_jis" ) ) ;
    txt = Case ( err ; TextDecode ( HexDecode ( Left ( hex ; 38 ) ; "tmp.bin" ) ; "shift_jis" ) ;
    TextDecode ( HexDecode ( Left ( hex ; 40 ) ; "tmp.bin" ) ; "shift_jis" ) )
] ;
    txt & Case ( Length ( hex ) > 40 ; "…" )
)

同じ計算が2回出てくるのが今一ですか

#5 2023-06-30 20:39:38

himadanee
Guest

Re: 文字の最後を”…”にして省略する方法はありますか?

あ、40か38かのところだけCaseにすればいいんだった...それでもやっぱり同じ計算が2回出てくる感はありますが

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

Board footer

Powered by FluxBB
Modified by Visman

[ Generated in 0.007 seconds, 7 queries executed - Memory usage: 553.59 KiB (Peak: 581.48 KiB) ]