-4

こんにちは、プログラミングは初めてです。住所は次の形式で、番地と番地の部分を分けたいと思います。

house no.966 s# 70  Kashmir road Peshawar road Rawalpindi
house no.970 st. # 43  Darian Kalar saeedan
H# 110 Street No.35  Dhowk kala Rwp
h# 124 Street No.73  G-11/3 ISB
h no.423 St. No.23  Chan chirag Rawat
H No.437 st. # 61  Chaklal scheme 3 RAWALPINDI

これに関するヘルプの提案はありますか?

4

1 に答える 1

0

2組の数字の直後にあるように見えるので、次のようにすることができます。

void Main()
{
    var addresses = new string[] { 
        "house no.966 s# 70  Kashmir road Peshawar road Rawalpindi",
        "house no.970 st. # 43  Darian Kalar saeedan",
        "H# 110 Street No.35  Dhowk kala Rwp",
        "h# 124 Street No.73  G-11/3 ISB",
        "h no.423 St. No.23  Chan chirag Rawat",
        "H No.437 st. # 61  Chaklal scheme 3 RAWALPINDI"
    };

    Regex houseAndStreet = new Regex(@"(\d+).+?(\d+)");

    foreach (string address in addresses)
    {
        Match match = houseAndStreet.Match(address);
        string house = match.Groups[1].Value;
        string street = match.Groups[2].Value;
        Console.WriteLine ("House = {0}, Street = {1}", house, street);
    }
}

エラーチェックを追加してより堅牢にする必要がありますが、それが基本的な考え方です。

正規表現は次のように分類されます。

  • (\d+)グループ内の1つ以上の数字
  • .+?他の文字の貪欲でない検索
  • (\d+)別のグループの1つ以上の数字
于 2013-01-13T00:36:14.077 に答える