みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Pages: 1
印刷用紙のスペースの問題から、条件付き書式で
18文字以上からはフォントを小さくするようにしています
半角があると、まだ余裕があるのに条件を満たしてしまい小さくなってしまいます
半角は0.5とカウントして文字数をカウントすることはできませんか?
FM19WIN10です
半角の文字をフィルターして数えるといいでしょうね。
例えば、
Filter ( "ABCABC" ; "ABCDEF" ) は、"ABC" を返してきます。ですから、Length ( "ABCABC" ) - Length ( Filter ( "ABCABC" ; "ABCDEF" ) ) / 2 で、4.5 になります。
これを応用してみてください。
Offline
元のテキストを全て全角にしたもので元のテキストをFilterすると、
元のテキストの全角文字だけを取り出せます。
この文字数を元のテキストの文字数に加えると
全角を2、半角を1とした数値が得られます。
Offline
あぁ、そちらの方が簡単でしたね。
しばらくしなかったので、忘れていましjた。
Offline
チポさんのやり方ですと
どのような条件式になるのでしょうか?
他のソフトではバイト数を数えるという手法もあるみたいですね
単純にやるとすべてを全角に変換する計算フィールドを作りその文字数をカウント
と回りくどくなるところを、条件付き書式の計算値でスマートにできるということですよね?
条件付き書式のためには新たなフィールド不要です。
条件式に前記のロジックを計算式にすればいいのですが。。
使う関数は
KanaZenkaku
RomanZenkaku
Filter
Length
あと
Self
これは必須ではありませんが、、
関数のヘルプのリンクです
https://help.claris.com/ja/pro-help/con … tions.html
Offline
バイト数を数える、という方法は、ひと昔前の方法です。ほとんどのアプリケーションが Unicode に対応してきていますが、Unicode では、半角文字1バイト、全角文字2〜4バイト です。
http://itdoc.hitachi.co.jp/manuals/3000 … 080450.HTM
ですから、バイト数を数える関数は、FM7 から廃止されています。
Offline
一昔前の方法、というのはSJISの時代ことで、その通りですが
1~4バイトなのは「Unicode では」じゃなくて「UTF-8では」でしょうね。しかも半角文字といっても半角カタカナは1バイトじゃありません。
FMの内部はUTF-16なので、半角文字もすべて2バイトです。(文字数=バイト数/2)(厳密には4バイトの文字もあると言った方がいいのかな)
最初のUnicodeは「すべての文字を2バイトで表す」意気込みでしたがすぐに破綻してずいぶん複雑になってしまいましたね。(これは個人の感想)
なかなか複雑になってしまったのですが
半角は2文字で1文字扱いとして10文字から書式を変更したいときにこうすればよいのでしょうか?
(Length (Filter ( フィールド ; RomanZenkaku ( KanaZenkaku ( フィールド ) ) ))+(Length(フィールド ) - Length(Filter ( フィールド ; RomanZenkaku ( KanaZenkaku ( フィールド ) ) ))) / 2) ≥ 10
回りくどい記述で、もっと簡潔に書くことができるのでしょうか?
自分でもメンテナンスのときにパッと見て理解できる気がしません
UTFと書くつもりでUnicodeと書いてしまいました。すみません。
式は
Let (
Zen = RomanZenkaku ( KanaZenkaku ( フィールド ) ) ;
Length ( フィールド ) + Length ( Filter ( フィールド ; Zen ) ) ≥ 20
)
が簡明でしょう。
または、外字とかがはいるとだめですが、sjis へエンコードして数える方法もいいかも
Length ( HexEncode ( TextEncode ( フィールド ; "shift_jis" ; 1 ) ) ) / 2
Last edited by Shin (2022-06-12 08:55:03)
Offline
Length ( フィールド & Filter ( フィールド ; RomanZenkaku ( KanaZenkaku ( フィールド ) ) ) ) ≥ 20
ちょっと短くなりました
Offline
Pages: 1
[ Generated in 0.007 seconds, 9 queries executed - Memory usage: 564.58 KiB (Peak: 578.95 KiB) ]