Last active
November 28, 2024 18:15
-
-
Save kennyj/4966002 to your computer and use it in GitHub Desktop.
Revisions
-
kennyj revised this gist
Feb 16, 2013 . 1 changed file with 1 addition and 1 deletion.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -214,7 +214,7 @@ module TelSplitter # 市外局番長毎のマップを作成する 5.downto(2) do |i| const_set("MAP_#{i}", MAP.reject { |k, v| k.length != i }) end def self.split(tel) -
kennyj created this gist
Feb 16, 2013 .There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,232 @@ # encoding: utf-8 module TelSplitter MAP = { # 市外局番 , 市内局番の桁数のマップ # http://www.soumu.go.jp/main_sosiki/joho_tsusin/top/tel_number/number_shitei.html のデータを利用 # 固定電話以外の桁数は適当です... '050' => 4, # IP電話 '070' => 4, # 携帯電話/PHS '080' => 4, # 携帯電話 '090' => 4, # 携帯電話 '020' => 3, # その他 '0120' => 3, # その他 '0800' => 3, # その他 '0570' => 3, # その他 '0990' => 3, # その他 # 固定電話 '011' => 3, '0123' => 2, '0123' => 2, '0123' => 2, '0124' => 2, '0125' => 2, '0126' => 2, '01267' => 1, '0133' => 2, '0133' => 2, '0134' => 2, '0135' => 2, '0135' => 2, '0136' => 2, '0136' => 2, '01372' => 1, '01374' => 1, '0137' => 2, '01377' => 1, '0137' => 2, '0138' => 2, '01392' => 1, '0139' => 2, '0139' => 2, '01397' => 1, '01398' => 1, '0142' => 2, '0143' => 2, '0144' => 2, '0145' => 2, '0145' => 2, '01456' => 1, '01457' => 1, '0146' => 2, '0146' => 2, '01466' => 1, '0152' => 2, '0152' => 2, '0152' => 2, '0153' => 2, '0153' => 2, '0153' => 2, '0153' => 2, '0154' => 2, '01547' => 1, '015' => 3, '0155' => 2, '015' => 3, '01558' => 1, '0156' => 2, '01564' => 1, '0156' => 2, '0157' => 2, '0158' => 2, '0158' => 2, '01586' => 1, '01587' => 1, '0158' => 2, '0162' => 2, '01632' => 1, '01634' => 1, '01635' => 1, '0163' => 2, '0163' => 2, '0164' => 2, '0164' => 2, '0164' => 2, '01648' => 1, '0165' => 2, '01654' => 1, '01655' => 1, '01656' => 1, '01658' => 1, '0166' => 2, '0167' => 2, '0172' => 2, '0173' => 2, '0173' => 2, '0174' => 2, '0175' => 2, '0175' => 2, '0176' => 2, '017' => 3, '0178' => 2, '0179' => 2, '0182' => 2, '0183' => 2, '0184' => 2, '0185' => 2, '0185' => 2, '0186' => 2, '0186' => 2, '0186' => 2, '0187' => 2, '0187' => 2, '018' => 3, '0191' => 2, '0192' => 2, '0193' => 2, '0193' => 2, '0194' => 2, '0194' => 2, '0195' => 2, '0195' => 2, '019' => 3, '0197' => 2, '0197' => 2, '0198' => 2, '0198' => 2, '022' => 3, '0220' => 2, '0223' => 2, '0224' => 2, '0224' => 2, '0225' => 2, '0226' => 2, '0228' => 2, '0229' => 2, '0233' => 2, '0234' => 2, '0235' => 2, '023' => 3, '0237' => 2, '0237' => 2, '0238' => 2, '0238' => 2, '0240' => 2, '0241' => 2, '0241' => 2, '0241' => 2, '0241' => 2, '0242' => 2, '0243' => 2, '0244' => 2, '024' => 3, '0246' => 2, '0247' => 2, '0247' => 2, '0248' => 2, '0248' => 2, '024' => 3, '025' => 3, '0250' => 2, '0254' => 2, '0254' => 2, '0254' => 2, '025' => 3, '0255' => 2, '025' => 3, '025' => 3, '0256' => 2, '0256' => 2, '025' => 3, '0257' => 2, '025' => 3, '025' => 3, '0258' => 2, '0259' => 2, '0260' => 2, '0261' => 2, '026' => 3, '0263' => 2, '0264' => 2, '0265' => 2, '0265' => 2, '0266' => 2, '0267' => 2, '0267' => 2, '0268' => 2, '0269' => 2, '0269' => 2, '0270' => 2, '027' => 3, '027' => 3, '0274' => 2, '0274' => 2, '0276' => 2, '0277' => 2, '0278' => 2, '0279' => 2, '0279' => 2, '0280' => 2, '0282' => 2, '0283' => 2, '0284' => 2, '0285' => 2, '0285' => 2, '028' => 3, '0287' => 2, '0287' => 2, '0287' => 2, '0288' => 2, '0289' => 2, '0291' => 2, '029' => 3, '0293' => 2, '0294' => 2, '0295' => 2, '0295' => 2, '0296' => 2, '0296' => 2, '0297' => 2, '0297' => 2, '029' => 3, '0299' => 2, '0299' => 2, '03' => 4, '0422' => 2, '042' => 3, '042' => 3, '042' => 3, '042' => 3, '042' => 3, '0428' => 2, '04' => 4, '042' => 3, '043' => 3, '0436' => 2, '0438' => 2, '0439' => 2, '044' => 3, '045' => 3, '0460' => 2, '046' => 3, '0463' => 2, '0465' => 2, '0466' => 2, '0467' => 2, '046' => 3, '0470' => 2, '0470' => 2, '04' => 4, '04' => 4, '047' => 3, '047' => 3, '0475' => 2, '0475' => 2, '0476' => 2, '0478' => 2, '0479' => 2, '0479' => 2, '048' => 3, '048' => 3, '0480' => 2, '048' => 3, '048' => 3, '049' => 3, '0493' => 2, '0494' => 2, '0495' => 2, '04992' => 1, '04994' => 1, '04996' => 1, '04998' => 1, '052' => 3, '053' => 3, '0531' => 2, '0532' => 2, '0533' => 2, '0536' => 2, '0536' => 2, '0537' => 2, '0538' => 2, '0539' => 2, '054' => 3, '0544' => 2, '0545' => 2, '0547' => 2, '0548' => 2, '0550' => 2, '0551' => 2, '055' => 3, '0553' => 2, '0554' => 2, '0555' => 2, '0556' => 2, '0556' => 2, '0557' => 2, '0558' => 2, '0558' => 2, '055' => 3, '0561' => 2, '0562' => 2, '0563' => 2, '0564' => 2, '0565' => 2, '0566' => 2, '0567' => 2, '0568' => 2, '0569' => 2, '0572' => 2, '0573' => 2, '0573' => 2, '0574' => 2, '0574' => 2, '0575' => 2, '0575' => 2, '0576' => 2, '05769' => 1, '0577' => 2, '0578' => 2, '058' => 3, '0581' => 2, '0584' => 2, '0585' => 2, '0586' => 2, '0587' => 2, '059' => 3, '059' => 3, '0594' => 2, '0595' => 2, '0595' => 2, '0596' => 2, '0597' => 2, '0597' => 2, '05979' => 1, '0598' => 2, '0598' => 2, '0599' => 2, '0599' => 2, '06' => 4, '072' => 3, '0721' => 2, '072' => 3, '072' => 3, '0725' => 2, '072' => 3, '072' => 3, '072' => 3, '073' => 3, '0735' => 2, '0735' => 2, '0736' => 2, '0736' => 2, '0737' => 2, '0738' => 2, '0739' => 2, '0740' => 2, '0742' => 2, '0743' => 2, '0744' => 2, '0745' => 2, '0745' => 2, '0746' => 2, '0746' => 2, '07468' => 1, '0747' => 2, '0747' => 2, '0748' => 2, '0748' => 2, '0749' => 2, '0749' => 2, '075' => 3, '0761' => 2, '0761' => 2, '076' => 3, '0763' => 2, '076' => 3, '0765' => 2, '0766' => 2, '0767' => 2, '0767' => 2, '0768' => 2, '0768' => 2, '0770' => 2, '0770' => 2, '0771' => 2, '0771' => 2, '0772' => 2, '0772' => 2, '0773' => 2, '0773' => 2, '0774' => 2, '077' => 3, '0776' => 2, '0778' => 2, '0779' => 2, '078' => 3, '0790' => 2, '0790' => 2, '0791' => 2, '0791' => 2, '079' => 3, '079' => 3, '0794' => 2, '0795' => 2, '079' => 3, '0795' => 2, '0796' => 2, '0796' => 2, '079' => 3, '0797' => 2, '0798' => 2, '0799' => 2, '0799' => 2, '082' => 3, '0820' => 2, '0820' => 2, '0823' => 2, '0824' => 2, '082' => 3, '0824' => 2, '0826' => 2, '0826' => 2, '0826' => 2, '0827' => 2, '0829' => 2, '083' => 3, '0833' => 2, '0834' => 2, '0835' => 2, '0836' => 2, '0837' => 2, '0837' => 2, '0838' => 2, '08387' => 1, '08388' => 1, '083' => 3, '083' => 3, '08396' => 1, '0845' => 2, '0846' => 2, '0846' => 2, '0847' => 2, '0847' => 2, '08477' => 1, '0847' => 2, '0848' => 2, '084' => 3, '084' => 3, '08512' => 1, '08514' => 1, '0852' => 2, '0853' => 2, '0854' => 2, '0854' => 2, '0854' => 2, '0854' => 2, '0855' => 2, '0855' => 2, '0855' => 2, '0856' => 2, '0856' => 2, '0857' => 2, '0858' => 2, '0858' => 2, '0859' => 2, '0859' => 2, '086' => 3, '086' => 3, '0863' => 2, '0865' => 2, '0865' => 2, '0866' => 2, '0866' => 2, '0866' => 2, '0867' => 2, '0867' => 2, '0867' => 2, '0868' => 2, '0868' => 2, '0869' => 2, '0869' => 2, '086' => 3, '0875' => 2, '0877' => 2, '087' => 3, '0879' => 2, '0879' => 2, '0880' => 2, '0880' => 2, '0880' => 2, '0880' => 2, '0883' => 2, '0883' => 2, '0883' => 2, '0884' => 2, '0884' => 2, '0884' => 2, '0885' => 2, '088' => 3, '0887' => 2, '0887' => 2, '0887' => 2, '0887' => 2, '088' => 3, '0889' => 2, '0889' => 2, '0892' => 2, '0893' => 2, '0894' => 2, '0894' => 2, '0895' => 2, '0895' => 2, '0896' => 2, '0897' => 2, '0897' => 2, '0898' => 2, '089' => 3, '092' => 3, '092' => 3, '0920' => 2, '0920' => 2, '0920' => 2, '093' => 3, '0930' => 2, '0940' => 2, '0942' => 2, '0943' => 2, '0943' => 2, '0944' => 2, '0946' => 2, '0947' => 2, '0948' => 2, '0949' => 2, '09496' => 1, '0950' => 2, '0952' => 2, '0954' => 2, '0954' => 2, '0955' => 2, '0955' => 2, '0956' => 2, '0957' => 2, '0957' => 2, '095' => 3, '0959' => 2, '0959' => 2, '0959' => 2, '096' => 3, '0964' => 2, '0965' => 2, '0966' => 2, '0966' => 2, '0967' => 2, '0967' => 2, '0967' => 2, '0968' => 2, '0968' => 2, '0969' => 2, '0972' => 2, '0972' => 2, '0973' => 2, '0973' => 2, '0974' => 2, '0974' => 2, '097' => 3, '0977' => 2, '0978' => 2, '0978' => 2, '0978' => 2, '0979' => 2, '098' => 3, '0980' => 2, '09802' => 1, '0980' => 2, '0980' => 2, '0982' => 2, '0982' => 2, '0982' => 2, '0983' => 2, '0984' => 2, '0985' => 2, '0986' => 2, '0987' => 2, '09912' => 1, '09913' => 1, '099' => 3, '0993' => 2, '0993' => 2, '099' => 3, '0994' => 2, '0994' => 2, '0995' => 2, '0995' => 2, '0996' => 2, '0996' => 2, '09969' => 1, '0997' => 2, '0997' => 2, '0997' => 2, '0997' => 2, '0997' => 2 } # 市外局番長毎のマップを作成する 5.downto(2) do |i| const_set("MAP_#{i}", MAP.select { |e| e.length == i }) end def self.split(tel) # 市外局番の長いものから探していく [MAP_5, MAP_4, MAP_3, MAP_2].each_with_index do |map, index| len = map.first[0].length if map.has_key?(tel[0, len]) len_2 = map[tel[0, len]] # 市内局番の長さ return [tel[0, len], tel[len, len_2], tel[(len + len_2)..-1]] end end # 見つからなかった return [tel, "", ""] end end