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

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

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

You are not logged in.

Announcement

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


#1 2019-12-23 16:40:31

yuki7845
Member

長い住所を丁度良い所で2行に改行したい

お世話になっております。
ファイルメーカー18 Win7を使っています。

年賀はがきを印刷するにあたり、住所録で困っています。

約5,000件ある住所録がありますが、住所1のフィールドに長い住所(12文字以上)が3,000件ほどあります。
年賀はがきのため、縦書き印刷する場合、長い住所は1行では収まりきらないため、2行に分ける必要があります。
(何文字以上は文字を小さくするということは考えていません。)
現状はフィールドの文字数が12文字以上は改行をしています。
しかし、住所1の文字数が13文字の場合、13文字目のみ改行されてしまうので見た目が悪いので、この場合は番地で改行しています。

そこで、希望としては、住所1が12文字以上の場合、番地の前で自動改行または、
住所の改行がおかしくない、丁度良いところ(例えば:東京都新宿区歌舞伎町1-1(改行)●●●●ビル3F)で自動改行してくれるのが良いのですが、そのような計算式はありますか。
色々とネットで探したのですが、このような投稿が非常に少なく、今回投稿させていただきました。

ご教授いただければ幸いです。

Offline

#2 2019-12-23 17:28:34

Shin
Member

Re: 長い住所を丁度良い所で2行に改行したい

あらかじめ、都道府県、市区郡町村名、大字、字、丁目、番地 を区切ってあれば可能かもしれませんが、完全な自動処理は無理でしょう。

アイデアだけですが、
ある程度自動化するには、郵便番号データを使って、都道府県、市区郡町村名 は確実に区切ることができます。その次の大字、字までが区分として登録されていれば、そこまでは自動かできるかもしれません。それ以降は手で設定でしょうね。
区切り文字として、ゼロ幅空白を入れておけば、印刷時には無視されるはずです。それを改行に置き換えれば、適当な場所での改行になるでしょう。

外部のエンジンを使うのでしたら、形態素解析エンジン が有用でしょう。組み込んでみるといいかもしれません。

Last edited by Shin (2019-12-23 17:56:37)

Offline

#3 2019-12-24 00:38:55

qb_dp
Member

Re: 長い住所を丁度良い所で2行に改行したい

正規表現を利用して住所を分割するサンプル。
※要プラグイン

フィールド設定 [結果;
Let([
_PS="$reg='(.{2,3}?[都道府県])((?:高市|静岡市|野々市|西村|西八代郡市|芳賀郡市|羽村|福岡市|神戸市|神崎郡市|相模原市|田村|熊本市|浜松市|武蔵村|横浜市|柴田郡村|杵島郡大町|東村|札幌市|新潟市|廿日市|広島市|川崎市|岡山市|大阪市|大町|大村|堺市|四日市|名古屋市中村|名古屋市|吉野郡下市|千葉市|十日町|北村|北九州市|余市郡余市|余市|佐波郡玉村|仙台市|京都市|中新川郡上市|さいたま市|.)?.*?[市区町村])(.*?)($|( | )(.*))';
$Result=[regex]::Matches( '{住所}',$reg);
$Result.Groups[1].Value;
$Result.Groups[2].Value;
$Result.Groups[3].Value;
$Result.Groups[6].Value;"
];
SMPS_Exe(
Substitute ( _PS ; "{住所}" ; 住所フィールド )
)
)
]

住所フィールドの値が「福井県大野市下郷8-3-5 マンション下郷第1 1308号室」の場合、
結果:
福井県
大野市
下郷8-3-5
マンション下郷第1 1308号室


※正規表現については、以下のモノを少し変更して使用しています。
住所を都道府県 / 市区町村 / 町域名に分ける正規表現 · GitHub
https://gist.github.com/zakuroishikuro/ … 93c4472109

プラグイン:ScriptMakerPS(FileMakerのフィールドに記述した「PowerShell」を実行し、戻り値を取得。)
https://sites.google.com/site/scriptmakerps/

Offline

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

Board footer

Powered by FluxBB
Modified by Visman

[ Generated in 0.008 seconds, 7 queries executed - Memory usage: 554.4 KiB (Peak: 581.76 KiB) ]