batch_prog
Cadet 2nd Year
- Registriert
- März 2017
- Beiträge
- 27
Ich versuche mit nachfolgendem Skript Werte (Straße von der Hausnummer) zu trennen, allerdings bekomme ich noch nicht ganz das gewünschte Ergebniss.
Leider passt es noch nicht ganz bei den Straßen: Johann - G. - Gutenbergstr 22 A, D1 4-8, 203 East 50th St. , Johann-G.-Gutenbergstr. 22 A
using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection.Emit;
using System.Text;
using System.Threading.Tasks;
using Microsoft.VisualBasic;
using System.IO;
using System.Threading;
using System.Text.RegularExpressions;
namespace ConsoleApp1
{
class Program
{
static void Main(string[] args)
{
string[] tests = new string[] {
"1 Teststreet",
"1 a Teststreet",
"1a Teststreet",
"Teststreet 1",
"Teststreet 1 a",
"Teststreet 1a",
"Teststreet 1 a-f",
"Teststreet 1a-f",
"Teststreet 1-400 ss-ss",
"1 a-f Teststreet",
"1a-f Teststreet",
"67 a-g Musterstraße",
"67a-g Muster straße",
"Ernst-Thäl-mann-stra-sse 8",
"203 East 50th St.",
"12th Street 123",
"Musterstraße 67 a-g",
"Musterstraße 67a-g",
"D1 4-8",
"Johann-G.-Gutenbergstr 22 A",
"Johann - G. - Gutenbergstr 22 A",
"King George V 3a(1)",
"3a(1) King George V",
};
string result = string.Join(Environment.NewLine, tests
.Select(test => new {
raw = test,
address = SplitStreet(test)
})
.Select(test => $"{test.raw,25} -> {test.address.street} :: {test.address.number}"));
Console.Write(result);
Console.ReadKey();
}
private static (string street, string number) SplitStreet(string value)
{
int count = value.Count(f => f == '-');
string pattern="";
for (int i = 0; i < count; i++)
{
pattern = pattern + @"\p{P}{0,}\p{L}{1,}";
}
var match = Regex.Match(value, @"\p{N}{0,}\p{L}{2,}" + @pattern + @"\p{N}{0,}(?:\s\p{L}+)*");
string street = match.Value;
string number = (match.Index > 0)
? value.Substring(0, match.Index)
: value.Substring(match.Index + match.Length);
return (street, number.Trim());
}
}
}
Leider passt es noch nicht ganz bei den Straßen: Johann - G. - Gutenbergstr 22 A, D1 4-8, 203 East 50th St. , Johann-G.-Gutenbergstr. 22 A
Kann mir da jemand von Euch helfen?
Zuletzt bearbeitet: