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

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

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

You are not logged in.

Announcement

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


#1 2016-02-12 12:43:20

malo
Member

特定文字列が含まれる場合にその特定文字列以前を置き換え

14pro Ad Mac

特定文字を含む場合に、それ以前のテキストを置き換える方法が上手くいかないため教えて頂きたいです。

別投稿を参考にjsonから郵便番号を取得し住所を分割して取得するスクリプトを組んでいます。
通常の場合は上手く機能しているのですが、北海道や京都などで「条」を含んだ場合に「条」以前は漢数字でなければいけないことが発覚しました。
ただし、番地は漢数字に変更したくないため「条」以前の数字のみ漢数字に変更したいのです。

北海道札幌市中央区南●●条西▲丁目
●●の部分のみを漢数字に置き換え。

住所に「条」が複数入る可能性もあるため、最後の「条」以前の数字を漢数字に置き換える方法を教えて頂きたいです。
よろしくお願いします。

Offline

#2 2016-02-12 13:08:44

Moz
Member

Re: 特定文字列が含まれる場合にその特定文字列以前を置き換え

指定したテキストから最後の「条」以前の数字を漢数字に置き換える。
残りの住所をくっつけなくていいなら & 以降を消して下さい。

一例)

Let ( [
	~住所 = 住所フィールド ;
	~count = Position ( ~住所  ; "条" ; Length ( ~住所 ) ; -1 )
] ;
	KanjiNumeral ( Left ( ~住所 ; ~count  ) ) &
	Middle ( ~住所 ; ~count - 1 ; Length ( ~住所 ) )
) // Let

Position は 第4引数が負の数の場合は第3引数から逆方向に検索するので、最後から1番目=最後の出現となります。

Offline

#3 2016-02-12 13:17:22

malo
Member

Re: 特定文字列が含まれる場合にその特定文字列以前を置き換え

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

初心者で申し訳ありません。
例に上げて頂いたもので「住所フィールド」部分のみ変更で使えるということでしょうか?
「~」の付く部分の表現をどう理解して良いかが分からないです・・・。

Offline

#4 2016-02-12 13:19:17

Moz
Member

Re: 特定文字列が含まれる場合にその特定文字列以前を置き換え

説明が不足していました。失礼しました。

「住所フィールド」部分のみ変更で使える

その通りです。
ニョロが付いたものは Let 内変数(式の中で定義された変数)と分かりやすくするためにニョロを付けています。

Offline

#5 2016-02-12 13:26:05

malo
Member

Re: 特定文字列が含まれる場合にその特定文字列以前を置き換え

ありがとうございます。

結果は「北海道札幌市中央区南29条西12丁目」 → 「北海道札幌市中央区南二九条9条西12丁目」となりました。

少し頑張ってみますが、お手間でなければ教えて頂けると幸いです。

Offline

#6 2016-02-12 13:30:51

Moz
Member

Re: 特定文字列が含まれる場合にその特定文字列以前を置き換え

嗚呼!2行目間違ってますね。完全に逆です。大変失礼しました。
Middle ( ~住所 ; ~count + 1 ; Length ( ~住所 ) )

Offline

#7 2016-02-12 13:35:39

malo
Member

Re: 特定文字列が含まれる場合にその特定文字列以前を置き換え

できました!
ありがとうございます。

Offline

#8 2016-02-12 13:45:10

malo
Member

Re: 特定文字列が含まれる場合にその特定文字列以前を置き換え

すいません。
追加です。

漢数字に置き換えることは出来たのですが、「29」は本来「二十九」となる必要があるが「二九」となってしまいます。
これはどの様に対応すると良いでしょうか?

また、「11」の場合には「十一」となり少し不規則ではあります。

Last edited by malo (2016-02-12 13:47:14)

Offline

#9 2016-02-12 13:52:28

Moz
Member

Re: 特定文字列が含まれる場合にその特定文字列以前を置き換え

KanjiNumeral 関数の仕様なので関数を利用する場合変更はできません。
KanjiNumeral
https://www.filemaker.com/help/14/fmp/j … 2.247.html

29を二十九とするのも二九とするのも間違いではないです。
FileMaker は単純に文字列として見ているので 二九 にしていると思われます。
KanjiNumeral ( Left ( ~住所 ; ~count  ) ) &の代わりに
29を二十九するというルールに従った置換の計算式を作っていくしかないでしょう。
他の数についても同様です。

Substitute 関数
https://www.filemaker.com/help/14/fmp/j … 2.269.html

Offline

#10 2016-02-12 13:57:17

malo
Member

Re: 特定文字列が含まれる場合にその特定文字列以前を置き換え

そうでしたか。
ありがとうございます。

良い方法考えてます。

Offline

#11 2016-02-12 14:41:40

Hiro
Member

Re: 特定文字列が含まれる場合にその特定文字列以前を置き換え

ちょーど現在、この郵便番号の逆引き問題に取り組み中。^^;

漢数字への任意書式変換は、NumToJTextを利用するのが吉。
ただし問題は、計算結果が数字部のみにカットされること。


要検討事例
【「条」関連】
・070-0031 北海道旭川市1条通 ~ 078-8220 北海道旭川市10条通 (初め多数)
・京都府内は全て漢数字
【「丁目」関連】
・018-0126 秋田県にかほ市象潟町1丁目塩越
・963-0533 福島県郡山市日和田町八丁目
・612-8084 京都府京都市伏見区京町8丁目横町
【それ以外に紛らわしい欧数字の住所例】
078-2531,078-2635 北海道雨竜郡雨竜町第5町内
024-0341,029-5513 岩手県和賀郡西和賀町杉名畑44地割

など、次から次へと難題が!!

郵政郵便番号簿と入力住所のファジーさ同士の突合せで、どこらを落とし所にするかの見極めが重要かと、

Last edited by Hiro (2016-02-12 14:54:25)

Offline

#12 2016-02-12 14:54:40

malo
Member

Re: 特定文字列が含まれる場合にその特定文字列以前を置き換え

ですよね。
使用するAPIにより結果も異なるのだと思いますが、必ずどこかにぶつかりそうな気がしてきました・・・。

私が使用したのはこちらです。
http://groovelab.asia/blog/archives/236
郵便番号取得と同時に住所を分割(東京都/千代田区/神田神保町)したかったためです。

良い方法見つかると嬉しいです。

Offline

#13 2016-02-12 15:02:12

Hiro
Member

Re: 特定文字列が含まれる場合にその特定文字列以前を置き換え

あれ、「正引き」ですか?
なら、実装はかなり楽なのでは?

Offline

#14 2016-02-12 15:07:04

malo
Member

Re: 特定文字列が含まれる場合にその特定文字列以前を置き換え

いえ。逆引きです。

東京都千代田区神田神保町1-1-1
から郵便番号を取得し、その結果が住所分割されているので各フィールドに振り分けている感じです。

北海道と京都だけだと思ってましたが、Hiroさんが言うようにあちこちで出てくるのであればエラーが出た際の処理を考えないとと思い、今悩みが増えたところです。

取りあえずはエラーが出なくなるまで一字ずつ削除して実行し、それで出た結果と重複する部分を削除し残りを以降の住所として保管しようかと考えました。結果は正しくないのですが。

Offline

#15 2016-02-12 15:11:51

malo
Member

Re: 特定文字列が含まれる場合にその特定文字列以前を置き換え

もしかしてですが、
数字でエラーが返った場合に全て漢数字に置き換えて実行すれば解決するってことでしょうか?
混在することもあるのでしょうか?

Offline

#16 2016-02-12 15:30:52

チポ
Member

Re: 特定文字列が含まれる場合にその特定文字列以前を置き換え

「条」の直前の洋数字を漢数字に変更する。
なら、
イレギュラーなしに出来るのでは。

「条」の前の文字列の単語数を数えて、最後の単語をNumToJTextで変更。
でいけるでしょう。

Offline

#17 2016-02-12 17:20:04

malo
Member

Re: 特定文字列が含まれる場合にその特定文字列以前を置き換え

チポさんありがとうございます。

北海道などごく一部と思っていたのですが対象の住所録が全国になるので、いずれにしてもHiroさんの問題にはぶつかると思われます。
手に負えない状況になりそうなので、別の手段を考えたいと思います。

いくつかの外部ソフトでは対応されているようなので、Hiroさんが解決策見つけられれば活用させて頂きたいと思います。

ありがとうございました。

Offline

#18 2016-02-12 17:43:29

Shin
Member

Re: 特定文字列が含まれる場合にその特定文字列以前を置き換え

> いくつかの外部ソフトでは対応されている
確認はしていませんが、それ用のデータを持たせていると思います。
20年ほど前に苦労していますので、ロジックでの完全解は多分無理だと思います。

Offline

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

Board footer

Powered by FluxBB
Modified by Visman

[ Generated in 0.038 seconds, 8 queries executed - Memory usage: 555.02 KiB (Peak: 575.93 KiB) ]