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

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

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

You are not logged in.

Announcement

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


#1 2020-07-16 15:12:35

まさたか
Member

住所の丁目・番地等の漢数字変換について

FileMakerpro12 Mac環境です。
住所の丁目、番地等の漢数字変換について教えていただきたいことがあります。
例えば「2−30−400」or「2丁目30番400」の場合「二−三十−四〇〇」or「二丁目三十番四〇〇」と言う風に漢数字変換したく、
kanjiNumeralを使用すれば二桁数字が「三十」ではなく「三〇」になってしまいます。
どのようにすれば望むような漢数字変換できるのでしょうか?
よろしくお願いします。

Last edited by まさたか (2020-07-16 15:12:50)

Offline

#2 2020-07-16 15:41:07

チポ
Member

Re: 住所の丁目・番地等の漢数字変換について

30 → 三十
400 → 四〇〇
これって、一貫性がないですよね。

  三十
  四百
とそろえていいのなら
  NumToJText
でできますが。。

Offline

#3 2020-07-16 15:44:46

チポ
Member

Re: 住所の丁目・番地等の漢数字変換について

ああ、それにしても、
数字だけ抜き出して変換しないといけないからかなり面倒なことですよ。

Offline

#4 2020-07-16 15:59:15

まさたか
Member

Re: 住所の丁目・番地等の漢数字変換について

チポさん
はがき用の印字データとして使用したいのでNumToJTextで「四百」ではダメなのですよ。
単純に二桁の数字だけを「十」「十五」「三十」「六十五」って変換が理想なのですが

Offline

#5 2020-07-16 16:22:52

チポ
Member

Re: 住所の丁目・番地等の漢数字変換について

私にはこれ以上お答えできません、申し訳ありません-_-

私のところではハガキ・封書の宛名書き全て横書きにしてますよ。

Offline

#6 2020-07-16 16:44:25

Shin
Member

Re: 住所の丁目・番地等の漢数字変換について

While ( 
[ 
	txt = Substitute ( 
			text ;
			[ "0" ; "0" ];[ "1" ; "1" ];[ "2" ; "2" ];[ "3" ; "3" ];[ "4" ; "4" ];[ "5" ; "5" ];[ "6" ; "6" ];[ "7" ; "7" ];[ "8" ; "8" ];[ "9" ; "9" ]
		) ; 
	txt = Substitute ( TrimAll ( txt ; 0 ; 1 ) ; " " ; ¶ ) ;
	txt0 = ""
] ; 
	not IsEmpty ( txt ) ; 
[ 
	txt1 = GetValue ( txt ; 1 ) ;
	txt0 = txt0 & Case ( Length ( txt1 )  ≥ 3 ; KanjiNumeral ( txt1 ) ; NumToJText ( txt1 ; 3 ; 2 ) )  ;
	txt = RightValues ( txt ; ValueCount ( txt ) - 1 )
] ; 
	txt0 
)

でいけそう。FM18以降です。それ以前も、Evaluate() 使った再帰式でロジック組めますので、御自分で考えてください。
問題は、ー です。似たものがたくさんあるので、縦書きできなかったり、数式のマイナスと見なされて消えたりしますので、全角のハイフンに統一させる必要があります。
また、部屋番号にみられる A101 などは考慮していません。

Last edited by Shin (2020-07-17 16:01:57)

Offline

#7 2020-07-16 18:11:59

まさたか
Member

Re: 住所の丁目・番地等の漢数字変換について

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

Shinさん
お答えありがとうございます。なかなかレベルが高くて・・・
Evaluate() 使った再帰式って未経験ですので少しずつ確認しながらできるのかチャレンジしてみます

Offline

#8 2020-07-17 12:15:29

まさたか
Member

Re: 住所の丁目・番地等の漢数字変換について

教えていただいたことが自身の能力ではいまいちFM18以前環境で再現が難しいかったので、以下のように考えてみてできないのか?というとこにたどり着きました

「2−30−400」「2丁目30番400」をkanjiNumeralで「二−三〇−四〇〇」「二丁目三〇番四〇〇」にしてから、二桁漢数字だけを選ぶことができれば、あとはSubstituteで[ "一〇" ; "十" ];[ "一一" ; "十一" ]・・・・[ "二〇" ; "二十" ];[ "二一" ; "二十一" ]・・・[ "九九" ; "九十九" ]で可能ではないか?
そのような考えのもと、現状二桁漢数字だけを選ぶという方法で現状足止めされています。
漢数字なので十の位「,一,二,三,四,五,六,七,八,九」と一の位「〇,一,二,三,四,五,六,七,八,九」の組み合わせで、漢数字が3連続でないものという条件で確実に二桁漢数字を掴めそうなのですが、これがなかなかどうすれば良いのかわかりませんのでご教授頂きたいです。
よろしくお願いいたします

Offline

#9 2020-07-17 13:59:50

himadanee
Guest

Re: 住所の丁目・番地等の漢数字変換について

住所なら四百で届くのでは?

#10 2020-07-17 15:56:23

Shin
Member

Re: 住所の丁目・番地等の漢数字変換について

FM8以降で、

Let(
[
	txt = Substitute ( 
			text ;
			[ "0" ; "0" ];[ "1" ; "1" ];[ "2" ; "2" ];[ "3" ; "3" ];[ "4" ; "4" ];[ "5" ; "5" ];[ "6" ; "6" ];[ "7" ; "7" ];[ "8" ; "8" ];[ "9" ; "9" ]
		) ; 
	$txt = Substitute ( TrimAll ( txt ; 0 ; 1 ) ; " " ; ¶ ) ;
	$txt0 = "" ;
	
	$rec =
		"Case(
			IsEmpty ( $txt ) ; $txt0 ; 
			Let(
			[
				$txt1 = GetValue ( $txt ; 1 ) ;
				$txt0 = $txt0 & Case ( Length ( $txt1 )  ≥ 3 ; KanjiNumeral ( $txt1 ) ; NumToJText ( $txt1 ; 3 ; 2 ) )  ;
				$txt = RightValues ( $txt ; ValueCount ( $txt ) - 1 )
			] ;
				Evaluate ( $rec ) 
			)
		)"
];
	Evaluate ( $rec )
)

Last edited by Shin (2020-07-20 11:54:33)

Offline

#11 2020-07-20 10:41:29

まさたか
Member

Re: 住所の丁目・番地等の漢数字変換について

Shinさん
ありがとうございます。望み通りの結果になりました。
ある程度まで同様に書き上げたのですが「"Case(」を使うことが気が付かずでした。

Offline

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

Board footer

Powered by FluxBB
Modified by Visman

[ Generated in 0.006 seconds, 9 queries executed - Memory usage: 565.84 KiB (Peak: 581.31 KiB) ]