Skip to content

Instantly share code, notes, and snippets.

@kennyj
Last active March 14, 2022 02:28
Show Gist options
  • Star 17 You must be signed in to star a gist
  • Fork 3 You must be signed in to fork a gist
  • Save kennyj/4966002 to your computer and use it in GitHub Desktop.
Save kennyj/4966002 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, '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.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