Skip to content

Instantly share code, notes, and snippets.

@mogya
Forked from kennyj/gist:4966002
Last active August 31, 2017 03:38
Show Gist options
  • Select an option

  • Save mogya/77bacad211389f739a3d to your computer and use it in GitHub Desktop.

Select an option

Save mogya/77bacad211389f739a3d to your computer and use it in GitHub Desktop.
ハイフン付き電話番号に分割
# 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
@mogya
Copy link
Copy Markdown
Author

mogya commented Jan 30, 2016

duplicated keys removed.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment