Skip to content

Instantly share code, notes, and snippets.

@ytabuchi
Last active August 29, 2015 14:23
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ytabuchi/bc69e98bdc3b940641c3 to your computer and use it in GitHub Desktop.
Save ytabuchi/bc69e98bdc3b940641c3 to your computer and use it in GitHub Desktop.
住所から都道府県と地域を特定するクラスとメソッド
class Program
{
static void Main(string[] args)
{
// http://hogehoge.tk/personal/ で作成
var address = new List<Address> {
new Address { FullAddress = "沖縄県那覇市田原3-16-3" },
new Address { FullAddress = "愛媛県西条市天神2-1" },
...
...
};
var city = new SpecifyCity();
var area = new SpecifyArea();
foreach (var item in address)
{
item.City = city.Specify(item.FullAddress);
item.Area = area.Specify(item.City);
Console.WriteLine(item.Area + ": " + item.City + ": " + item.FullAddress);
}
}
}
class SpecifyCity
{
/// <summary>
/// 住所から都道府県を特定するメソッドです。
/// </summary>
/// <param name="address">住所</param>
/// <returns></returns>
public string Specify(string address)
{
// 都道府県が省略されそうな東京都、大阪府、京都府、神奈川県、愛知県のみ、政令指定都市(?)をマッチさせます。
const string tokyoRegex = "(千代田区|中央区|港区|新宿区|文京区|台東区|墨田区|江東区|品川区|目黒区|大田区|世田谷区|渋谷区|中野区|杉並区|豊島区|北区|荒川区|板橋区|練馬区|足立区|葛飾区|江戸川区|八王子市|立川市|武蔵野市|三鷹市|府中市|昭島市|調布市|町田市|小金井市|日野市|国分寺市|国立市|狛江市|東大和市|武蔵村山市|多摩市|稲城市|小平市|東村山市|西東京市|清瀬市|東久留米市|青梅市|福生市|羽村市|あきる野市|瑞穂町|日の出町|檜原村|奥多摩町)";
const string osakaRegex = "(大阪市|堺市|堺市|能勢町|豊能町|池田市|箕面市|豊中市|茨木市|高槻市|島本町|吹田市|摂津市|枚方市|交野市|寝屋川市|守口市|門真市|四條畷市|大東市|東大阪市|八尾市|柏原市|和泉市|高石市|泉大津市|忠岡町|岸和田市|貝塚市|熊取町|泉佐野市|田尻町|泉南市|阪南市|岬町|松原市|羽曳野市|藤井寺市|太子町|河南町|千早赤阪村|富田林市|大阪狭山市|河内長野市|西区|浪速区|西成区|港区|此花区|西淀川区|東淀川区|東成区|天王寺区|住吉区|大正区|旭区|福島区|都島区|城東区|生野区|阿倍野区|東住吉区|淀川区|鶴見区|平野区|住之江区|中央区|北区|堺区|中区|東区|南区|美原区)";
const string kyotoRegex = "(京都市|福知山市|舞鶴市|綾部市|宇治市|宮津市|亀岡市|城陽市|向日市|長岡京市|八幡市|京田辺市|京丹後市|南丹市|木津川市|大山崎町|久御山町|井手町|宇治田原町|笠置町|和束町|精華町|南山城村|京丹波町|伊根町|与謝野町)";
const string kanagawaRegex = "(横浜市|鶴見区|神奈川区|西区|中区|南区|港南区|保土ケ谷区|旭区|磯子区|金沢区|港北区|緑区|青葉区|都筑区|戸塚区|栄区|泉区|瀬谷区|川崎市|川崎区|幸区|中原区|高津区|宮前区|多摩区|麻生区|相模原市|緑区|中央区|南区|横須賀市|平塚市|鎌倉市|藤沢市|小田原市|茅ヶ崎市|逗子市|三浦市|秦野市|厚木市|大和市|伊勢原市|海老名市|座間市|南足柄市|綾瀬市)";
const string aichiRegex = "(名古屋市|千種区|東区|北区|西区|中村区|中区|昭和区|瑞穂区|熱田区|中川区|港区|南区|守山区|緑区|名東区|天白区|一宮市|瀬戸市|春日井市|犬山市|江南市|小牧市|稲沢市|尾張旭市|岩倉市|豊明市|日進市|清須市|北名古屋市|長久手市|東郷町|豊山町|大口町|扶桑町|津島市|愛西市|弥富市|あま市|大治町|蟹江町|飛島村|半田市|常滑市|東海市|大府市|知多市|阿久比町|東浦町|南知多町|美浜町|武豊町|岡崎市|碧南市|刈谷市|豊田市|安城市|西尾市|知立市|高浜市|みよし市|幸田町|豊橋市|豊川市|蒲郡市|新城市|田原市|設楽町|東栄町|豊根村)";
// address に都道府県が含まれていれば都道府県名を返し、それ以外で各正規表現に該当すればそれぞれの県名を返します。
System.Text.RegularExpressions.Match m;
m = System.Text.RegularExpressions.Regex.Match(address, ".*?(東京都|道|府|県)");
if (m.Value != "")
{
return m.Value;
}
if (System.Text.RegularExpressions.Regex.IsMatch(address, tokyoRegex))
return "東京都";
if (System.Text.RegularExpressions.Regex.IsMatch(address, osakaRegex))
return "大阪府";
if (System.Text.RegularExpressions.Regex.IsMatch(address, kyotoRegex))
return "京都府";
if (System.Text.RegularExpressions.Regex.IsMatch(address, kanagawaRegex))
return "神奈川県";
if (System.Text.RegularExpressions.Regex.IsMatch(address, aichiRegex))
return "愛知県";
return "不明";
}
}
class SpecifyArea
{
/// <summary>
/// 都道府県名から地域名を特定するメソッドです。
/// </summary>
/// <param name="city">都道府県名</param>
/// <returns></returns>
public string Specify(string city)
{
string area = "";
if (System.Text.RegularExpressions.Regex.IsMatch(city, "(東京都|神奈川県|埼玉県|千葉県|茨城県|栃木県|群馬県)"))
area = "関東";
if (System.Text.RegularExpressions.Regex.IsMatch(city, "(大阪府|京都府|三重県|滋賀県|兵庫県|奈良県|和歌山県)"))
area = "近畿";
if (System.Text.RegularExpressions.Regex.IsMatch(city, "(新潟県|富山県|石川県|福井県|山梨県|長野県|岐阜県|静岡県|愛知県)"))
area = "中部";
if (System.Text.RegularExpressions.Regex.IsMatch(city, "(福岡県|佐賀県|長崎県|熊本県|大分県|宮崎県|鹿児島県|沖縄県)"))
area = "九州";
if (System.Text.RegularExpressions.Regex.IsMatch(city, "(青森県|岩手県|宮城県|秋田県|山形県|福島県)"))
area = "東北";
if (System.Text.RegularExpressions.Regex.IsMatch(city, "北海道"))
area = "北海道";
if (System.Text.RegularExpressions.Regex.IsMatch(city, "(鳥取県|島根県|岡山県|広島県|山口県)"))
area = "中国";
if (System.Text.RegularExpressions.Regex.IsMatch(city, "(徳島県|香川県|愛媛県|高知県)"))
area = "四国";
return area;
}
}
class Address
{
public string Area { get; set; }
public string City { get; set; }
public string FullAddress { get; set; }
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment