-
-
Save mogya/77bacad211389f739a3d to your computer and use it in GitHub Desktop.
ハイフン付き電話番号に分割
This file contains 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 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
duplicated keys removed.