-
-
Save mogya/77bacad211389f739a3d to your computer and use it in GitHub Desktop.
ハイフン付き電話番号に分割
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 characters
| # 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, "0124"=>2, | |
| "0125"=>2, "0126"=>2, "01267"=>1, | |
| "0133"=>2, "0134"=>2, "0135"=>2, | |
| "0136"=>2, "01372"=>1, "01374"=>1, | |
| "0137"=>2, "01377"=>1, "0138"=>2, | |
| "01392"=>1, "0139"=>2, "01397"=>1, | |
| "01398"=>1, "0142"=>2, "0143"=>2, | |
| "0144"=>2, "0145"=>2, "01456"=>1, | |
| "01457"=>1, "0146"=>2, "01466"=>1, | |
| "0152"=>2, "0153"=>2, "0154"=>2, | |
| "01547"=>1, "015"=>3, "0155"=>2, | |
| "01558"=>1, "0156"=>2, "01564"=>1, | |
| "0157"=>2, "0158"=>2, "01586"=>1, | |
| "01587"=>1, "0162"=>2, "01632"=>1, | |
| "01634"=>1, "01635"=>1, "0163"=>2, | |
| "0164"=>2, "01648"=>1, "0165"=>2, | |
| "01654"=>1, "01655"=>1, "01656"=>1, | |
| "01658"=>1, "0166"=>2, "0167"=>2, | |
| "0172"=>2, "0173"=>2, "0174"=>2, | |
| "0175"=>2, "0176"=>2, "017"=>3, | |
| "0178"=>2, "0179"=>2, "0182"=>2, | |
| "0183"=>2, "0184"=>2, "0185"=>2, | |
| "0186"=>2, "0187"=>2, "018"=>3, | |
| "0191"=>2, "0192"=>2, "0193"=>2, | |
| "0194"=>2, "0195"=>2, "019"=>3, | |
| "0197"=>2, "0198"=>2, "022"=>3, | |
| "0220"=>2, "0223"=>2, "0224"=>2, | |
| "0225"=>2, "0226"=>2, "0228"=>2, | |
| "0229"=>2, "0233"=>2, "0234"=>2, | |
| "0235"=>2, "023"=>3, "0237"=>2, | |
| "0238"=>2, "0240"=>2, "0241"=>2, | |
| "0242"=>2, "0243"=>2, "0244"=>2, | |
| "024"=>3, "0246"=>2, "0247"=>2, | |
| "0248"=>2, "025"=>3, "0250"=>2, | |
| "0254"=>2, "0255"=>2, "0256"=>2, | |
| "0257"=>2, "0258"=>2, "0259"=>2, | |
| "0260"=>2, "0261"=>2, "026"=>3, | |
| "0263"=>2, "0264"=>2, "0265"=>2, | |
| "0266"=>2, "0267"=>2, "0268"=>2, | |
| "0269"=>2, "0270"=>2, "027"=>3, | |
| "0274"=>2, "0276"=>2, "0277"=>2, | |
| "0278"=>2, "0279"=>2, "0280"=>2, | |
| "0282"=>2, "0283"=>2, "0284"=>2, | |
| "0285"=>2, "028"=>3, "0287"=>2, | |
| "0288"=>2, "0289"=>2, "0291"=>2, | |
| "029"=>3, "0293"=>2, "0294"=>2, | |
| "0295"=>2, "0296"=>2, "0297"=>2, | |
| "0299"=>2, "03"=>4, "0422"=>2, | |
| "042"=>3, "0428"=>2, "04"=>4, | |
| "043"=>3, "0436"=>2, "0438"=>2, | |
| "0439"=>2, "044"=>3, "045"=>3, | |
| "0460"=>2, "046"=>3, "0463"=>2, | |
| "0465"=>2, "0466"=>2, "0467"=>2, | |
| "0470"=>2, "047"=>3, "0475"=>2, | |
| "0476"=>2, "0478"=>2, "0479"=>2, | |
| "048"=>3, "0480"=>2, "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, "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, "0557"=>2, "0558"=>2, | |
| "0561"=>2, "0562"=>2, "0563"=>2, | |
| "0564"=>2, "0565"=>2, "0566"=>2, | |
| "0567"=>2, "0568"=>2, "0569"=>2, | |
| "0572"=>2, "0573"=>2, "0574"=>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, | |
| "0594"=>2, "0595"=>2, "0596"=>2, | |
| "0597"=>2, "05979"=>1, "0598"=>2, | |
| "0599"=>2, "06"=>4, "072"=>3, | |
| "0721"=>2, "0725"=>2, "073"=>3, | |
| "0735"=>2, "0736"=>2, "0737"=>2, | |
| "0738"=>2, "0739"=>2, "0740"=>2, | |
| "0742"=>2, "0743"=>2, "0744"=>2, | |
| "0745"=>2, "0746"=>2, "07468"=>1, | |
| "0747"=>2, "0748"=>2, "0749"=>2, | |
| "075"=>3, "0761"=>2, "076"=>3, | |
| "0763"=>2, "0765"=>2, "0766"=>2, | |
| "0767"=>2, "0768"=>2, "0770"=>2, | |
| "0771"=>2, "0772"=>2, "0773"=>2, | |
| "0774"=>2, "077"=>3, "0776"=>2, | |
| "0778"=>2, "0779"=>2, "078"=>3, | |
| "0790"=>2, "0791"=>2, "079"=>3, | |
| "0794"=>2, "0795"=>2, "0796"=>2, | |
| "0797"=>2, "0798"=>2, "0799"=>2, | |
| "082"=>3, "0820"=>2, "0823"=>2, | |
| "0824"=>2, "0826"=>2, "0827"=>2, | |
| "0829"=>2, "083"=>3, "0833"=>2, | |
| "0834"=>2, "0835"=>2, "0836"=>2, | |
| "0837"=>2, "0838"=>2, "08387"=>1, | |
| "08388"=>1, "08396"=>1, "0845"=>2, | |
| "0846"=>2, "0847"=>2, "08477"=>1, | |
| "0848"=>2, "084"=>3, "08512"=>1, | |
| "08514"=>1, "0852"=>2, "0853"=>2, | |
| "0854"=>2, "0855"=>2, "0856"=>2, | |
| "0857"=>2, "0858"=>2, "0859"=>2, | |
| "086"=>3, "0863"=>2, "0865"=>2, | |
| "0866"=>2, "0867"=>2, "0868"=>2, | |
| "0869"=>2, "0875"=>2, "0877"=>2, | |
| "087"=>3, "0879"=>2, "0880"=>2, | |
| "0883"=>2, "0884"=>2, "0885"=>2, | |
| "088"=>3, "0887"=>2, "0889"=>2, | |
| "0892"=>2, "0893"=>2, "0894"=>2, | |
| "0895"=>2, "0896"=>2, "0897"=>2, | |
| "0898"=>2, "089"=>3, "092"=>3, | |
| "0920"=>2, "093"=>3, "0930"=>2, | |
| "0940"=>2, "0942"=>2, "0943"=>2, | |
| "0944"=>2, "0946"=>2, "0947"=>2, | |
| "0948"=>2, "0949"=>2, "09496"=>1, | |
| "0950"=>2, "0952"=>2, "0954"=>2, | |
| "0955"=>2, "0956"=>2, "0957"=>2, | |
| "095"=>3, "0959"=>2, "096"=>3, | |
| "0964"=>2, "0965"=>2, "0966"=>2, | |
| "0967"=>2, "0968"=>2, "0969"=>2, | |
| "0972"=>2, "0973"=>2, "0974"=>2, | |
| "097"=>3, "0977"=>2, "0978"=>2, | |
| "0979"=>2, "098"=>3, "0980"=>2, | |
| "09802"=>1, "0982"=>2, "0983"=>2, | |
| "0984"=>2, "0985"=>2, "0986"=>2, | |
| "0987"=>2, "09912"=>1, "09913"=>1, | |
| "099"=>3, "0993"=>2, "0994"=>2, | |
| "0995"=>2, "0996"=>2, "09969"=>1, | |
| "0997"=>2 | |
| } | |
| # 市外局番長毎のマップを作成する | |
| 5.downto(2) do |i| | |
| const_set("MAP_#{i}", MAP.reject { |k, v| k.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 |
Author
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
duplicated keys removed.