http://FMPro.info  FileMaker Pro 関連総合ポータルサイト

JTextToNumToThou 関数

カテゴリー : テキスト処理
計算結果のデータタイプ : 数字
対応FileMakerバージョン : 対応 7  対応 8  対応 8.5  対応 9  対応 10  対応 11  未対応 12  未対応 13  未対応 14  未対応 15
作者 : 社本修司 株式会社ジェネコム

概要

千の位までの<漢数字>を<数値>に変換します

構文

JTextToNumToThou ( 漢数字 )

引数

引数名タイプ備考
漢数字テキスト零から千の位までの漢数字九阡伍拾壱

別のウィンドウで、引数の値を変更してテストすることが出来ます

JTextToNumToThou ( "九阡伍拾壱" )

結果

9051

/*
JTextToNumToThou ( 漢数字 )
JTextToNum 関数のサブ関数です。
千の位までの<漢数字>を<数値>に変換します。
*/


Let
(
    [
    KANJINUM =
        Substitute (
            RomanHankaku ( 漢数字 ) ;
            [ "仟" ; "千" ] ; [ "阡" ; "千" ] ;
            [ "皕" ; "二百" ] ;
            [ "佰" ; "百" ] ; [ "陌" ; "百" ] ;
            [ "卅" ; "三十" ] ; [ "丗" ; "三十" ] ;
            [ "廿" ; "二十" ] ;
            [ "拾" ; "十" ] ;
            [ "玖" ; "九" ] ; [ "九" ; "9" ] ;
            [ "捌" ; "八" ] ; [ "八" ; "8" ] ;
            [ "柒" ; "七" ] ; [ "漆" ; "七" ] ; [ "七" ; "7" ] ;
            [ "陸" ; "六" ] ; [ "六" ; "6" ] ;
            [ "伍" ; "五" ] ; [ "五" ; "5" ] ;
            [ "亖" ; "四" ] ; [ "肆" ; "四" ] ; [ "四" ; "4" ] ;
            [ "参" ; "三" ] ; [ "參" ; "三" ] ; [ "三" ; "3" ] ;
            [ "弐" ; "二" ] ; [ "貳" ; "二" ] ; [ "二" ; "2" ] ;
            [ "壱" ; "一" ] ; [ "弌" ; "一" ] ; [ "壹" ; "一" ] ; [ "一" ; "1" ] ;
            [ "零" ; "〇" ] ; [ "〇" ; "0" ] ;
            [ "点" ; "." ] ; [ "." ; "." ] ;    
// 小数点の点
            [ "、" ; "" ] ; [ "," ; "" ] ; [ "," ; "" ]    
// 位取りのコンマ
        ) ;
    
    SEN =        
// 位の文字迄をテキストとして抽出
        Case (
            PatternCount ( KANJINUM ; "千" ) ;
            
    Left ( KANJINUM ; Position ( KANJINUM ; "千" ; 1 ; 1 ) ) ;
        ) ;
    KANJINUM_3 =     // 次の位で使うために位の文字以下の文字列を抽出
        Right ( KANJINUM ; Length ( KANJINUM ) - Position ( KANJINUM ; "千" ; 1 ; 1 ) ) ;

    HYAKU =
        Case (
            PatternCount ( KANJINUM_3 ; "百" ) ;
            
    Left ( KANJINUM_3 ; Position ( KANJINUM_3 ; "百" ; 1 ; 1 ) ) ;
        ) ;
        
    KANJINUM_2 =
        Right ( KANJINUM_3 ; Length ( KANJINUM_3 ) - Position ( KANJINUM_3 ; "百" ; 1 ; 1 ) ) ;

    JUU =
        Case (
            PatternCount ( KANJINUM_2 ; "十" ) ;
            
    Left ( KANJINUM_2 ; Position ( KANJINUM_2 ; "十" ; 1 ; 1 ) ) ;
        ) ;
        
    KANJINUM_1 =
        Right ( KANJINUM_2 ; Length ( KANJINUM_2 ) - Position ( KANJINUM_2 ; "十" ; 1 ; 1 ) ) ;

    // 二〇〇八 という表記に場合は位の記号がないため一の位として扱う
    ICHI = KANJINUM_1
    ] ;

    // それぞれの位毎に数値化し、その値を足して結果をだす
    // JTextToNum 関数で使われる文字も含め想定した文字以外が入っている場合は結果を返さない
    Case (
        not
IsEmpty ( KANJINUM ) and
        Exact (
            KANJINUM ;
            Filter ( KANJINUM ; "数極載正潤澗溝穣穰し��秭垓京兆億萬万仟阡千皕佰陌百卅丗廿拾十玖九捌八柒漆七陸六伍五亖肆四参參三弐貳二壱弌壹一零〇点.、,9876543210.-+, " )
        ) ;
            Case ( SEN = "千" ; 1 ; GetAsNumber ( SEN ) ) * 10^3 +
            Case ( HYAKU = "百" ; 1 ; GetAsNumber ( HYAKU ) ) * 10^2 +
            Case ( JUU = "十" ; 1 ; GetAsNumber ( JUU ) ) * 10^1 +
            GetAsNumber ( ICHI ) * 1
    )
)

エンコードは Unicode (UTF-8)、改行タイプは LF (Unix) 形式のテキストとして保存します。
テキストエディタで正常に開かない場合は、エンコードを指定してファイルを開くようにしてください。

詳細説明

JTextToNum 関数のサブ関数です。
千の位までの<漢数字>を<数値>に変換します。

この関数が使用する他のカスタム関数

この関数を使用する他のカスタム関数

注意:ここで紹介されているカスタム関数をご自分のシステムに組み込んだ場合に発生した問題についてはFMPro.infoは責任を負いません。

Copyright © 2004-2009 FMPro.info All Rights Reserved.