0

私は実際にこのスクリプトを使用しています:

using (SqlDataReader reader_org = select_org.ExecuteReader())
{
    while (reader_org.Read())
    {
        if (reader_org.IsDBNull(1) | reader_org.IsDBNull(0))
        continue;

        int cislo = reader_org.GetInt32(0);
        string s = reader_org.GetString(1);
        string ulice;
        Match m = Regex.Match(s, @"(\d+)");
        string cp = m.Groups[0].Value;
        if (cp.Length > 0)
        {
            s = s.Replace(cp, "").Trim();
            int number = Convert.ToInt32(cp);
        }
        if (s.Contains('/'))
        {
            Match l = Regex.Match(s, @"(\d+)");
            string co = l.Groups[0].Value;
            if (co.Length > 0)
            {
                s = s.Replace(co, "").Trim();
                int number = Convert.ToInt32(co);
            }
            s = s.Replace('/', ' ').Trim();
            Definitions.co.Add(co);
            MessageBox.Show("CO: " + co);
        }
        ulice = s;
        Definitions.Subjekt.Add(cislo);
        Definitions.Ulice.Add(ulice);
        Definitions.cp.Add(cp);
        MessageBox.Show("Adresa " + ulice + " " + cp);
    }
}

my string s get this data in while: (完全なアドレス)

                                                  // I need every value separately
Complete address - >                              Streets        House number       OC
5 renvan 5 /13                                   5 renvan             5              13
5 renwan 13                                      5 renwan             13             0
Terak 516                                        Terak                516            0
Terak 516/87                                     Terak                516            87
Timbron 5 87 /69                                 Timbron 5             87            69

しかし、今は最初の数字のintテキストを取得していますが、正しいサイトから読んで問題が解決する場合は、どうすればこの問題を解決できますか?

4

1 に答える 1

0

私はいくつかのコードを書きましたが、正しく理解できれば問題を解決できます。そうでない場合は、必要に応じて調整します。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;


namespace ConsoleApplication1
{

    public class Test
    {
        public static void Main()
        {
            var input = new List<string>() { 
            @"5 renvan 5 /13",
@"5 renwan 13",
@"Terak 516  ",
@"Terak 516/87",
"Timbron 5 87 /69"};

            foreach (var item in input)
            {
                var workItem = item.Trim().Replace("/", " ").Split(' ').Where(i => "" != i.Trim()).ToList();


                if (workItem.Count() > 1)
                {
                    string firstRightDigit = workItem[workItem.Count() - 1];
                    string secondRightDigit = workItem[workItem.Count() - 2];

                    int CO = 0;
                    if (!Int32.TryParse(secondRightDigit, out CO))
                    {
                        secondRightDigit = firstRightDigit;
                        firstRightDigit = "0";
                    }

                    Console.WriteLine(string.Format("House number: {0} \t\t CO:{1}", secondRightDigit, firstRightDigit));
                }

            }
        }
    }
}

ここに画像の説明を入力

** 追加した **

私は職場に到着し、別のソリューションを作成しました。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading.Tasks;

namespace ConsoleApplication2
{
    class Program
    {
        static void Main(string[] args)
        {
            var input = new List<string>() { 
            @"5 renvan 5 /13",
            @"5 renwan 13",
            @"Terak 516  ",
            @"Terak 516/87 ",
            @"Timbron 5 827 /619",
            @"Timbron 5 980 / 69   ",
            @"Timbron 5 187 / 121"};

            input.ForEach(item => {
                Match match = Regex.Match(item, @"(\d+)(\s*)?/?(\s*\d+\s*)?$", RegexOptions.IgnoreCase);

                Console.WriteLine(string.Format("Input string: {0,20}\tResult House #: {1,5}\tCO:{2,5}",
                    item,
                    match.Groups[1].Value.Trim(),
                    string.IsNullOrEmpty(match.Groups[3].Value.Trim()) ? "0" : match.Groups[3].Value.Trim()));
            });

        }

    }
}

ここに画像の説明を入力

于 2013-10-17T19:16:05.110 に答える