ここから本文です

C#にて文字列の”住所”を「町」と「〇丁目」で分割する方法はありますか? 例えば...

hok********さん

2012/9/1713:42:56

C#にて文字列の”住所”を「町」と「〇丁目」で分割する方法はありますか?
例えば「東京都杉並区天沼11丁目」という住所の「町」と「丁目」の部分を、「天沼」と「11丁目」に分割する方法が思いつかず悩んでいます。

【現在】
現在、「C#」言語にてプログラミングしているところで、当件については、例えば「天沼1丁目」という住所であれば、「Split("1")」で文字列を分解して、分解できれば1丁目のような形で実装しているのですが、これが「11丁目」以上の2桁の丁目になった場合の判定ができずに困っています。

無理やりif分で各パターンを実装してしまう方法はあるかもしれませんが、もっとスマートなやり方で分割する方法はないものでしょうか。
もちろん、分割できれば「Split」を使わない方法でも全く問題ありません。


【確認済事項】
「天沼11丁目」を「Split("1")」で分割すると、「天沼」、「””」、「丁目」と分解されてしまいました。


【補足】
〇丁目の〇に関して、「漢数字」は入ることはなく、また「半角数字」でのみで構成されている住所の文字列が対象となります。


とても初歩的な質問かも知れませんが、もし何かアイデア等ございましたら、ご教授頂ければ幸いです!
以上、宜しくお願い致します。

閲覧数:
2,493
回答数:
2
お礼:
25枚

違反報告

ベストアンサーに選ばれた回答

編集あり2012/9/1801:37:16

他のパターンも考慮しないといけない思いますが、正規表現のサンプルとして書いておきます。

string s = "東京都杉並区天沼11丁目";
System.Text.RegularExpressions.Match m;

m = System.Text.RegularExpressions.Regex.Match(s, ".+[都道府県]");
string todofuken = m.Value;
s = System.Text.RegularExpressions.Regex.Replace(s, ".+[都道府県]", "");

m = System.Text.RegularExpressions.Regex.Match(s, ".+[市区郡]");
string sikugun = m.Value;
s = System.Text.RegularExpressions.Regex.Replace(s, ".+[市区郡]", "");

m = System.Text.RegularExpressions.Regex.Match(s, @"\d+丁目");
string chome = m.Value;
string cho = System.Text.RegularExpressions.Regex.Replace(s, @"\d+丁目", "");

System.Diagnostics.Debug.WriteLine("都道府県:" + todofuken);
System.Diagnostics.Debug.WriteLine("市区郡:" + sikugun);
System.Diagnostics.Debug.WriteLine("町:" + cho);
System.Diagnostics.Debug.WriteLine(chome);



参考
正規表現の基本
http://dobon.net/vb/dotnet/string/regex.html

.NET Framework の正規表現
http://msdn.microsoft.com/ja-jp/library/hs600312(v=vs.80).aspx

質問した人からのコメント

2012/9/18 16:39:47

降参 ありがとうございます!とてもスマートな方法ですね♪
非常に勉強になりました。本当に有難うございました!!

ベストアンサー以外の回答

1〜1件/1件中

naz********さん

2012/9/1716:33:47

まぁ、正規表現が妥当ですかねー。
C#は知らないんで、正規表現以外の漠然としたアイディアだけ。

杉並区 天沼 1丁目
と分ければいいので。

”区”でSpliteで分けて、”天沼 1丁目”を取得。
あとは、これから数字と、”丁目”、空白を消す、というか、””に置換。。
そうすると、”天沼”が残る。

それから、数字以外を消しちゃう。
”1”や、”11”が残るので、”丁目”を足して、完成。

ってのはどうでしょうか?
意外と面倒かな?

天沼の部分に、丁目が入っていたりすると、単純置換すると、失敗するので、やはりデータを見てからですかねー。
その点は、正規表現もあんまり変わらんと思うけど。

この質問につけられたタグ

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる