Visual Studio - Trennung von Werten über reguläre Ausdrücke
Guten Morgen,
ich versuche mit nachfolgendem Skript Werte (Straße von der Hausnummer) allerdings bekomme ich noch nicht ganz das gewünschte Ergebniss.
Bisher erhalte ich nur folgende Ausgabe:
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?
Ich freue mich auf eure Rückmeldung,
Beste Grüße.
ich versuche mit nachfolgendem Skript Werte (Straße von der Hausnummer) allerdings bekomme ich noch nicht ganz das gewünschte Ergebniss.
Bisher erhalte ich nur folgende Ausgabe:
1 Teststreet -> Teststreet :: 1
1 a Teststreet -> Teststreet :: 1 a
1a Teststreet -> Teststreet :: 1a
Teststreet 1 -> Teststreet :: 1
Teststreet 1 a -> Teststreet :: 1 a
Teststreet 1a -> Teststreet :: 1a
Teststreet 1 a-f -> Teststreet :: 1 a-f
Teststreet 1a-f -> Teststreet :: 1a-f
Teststreet 1-400 ss-ss -> Teststreet :: 1-400 ss-ss
1 a-f Teststreet -> Teststreet :: 1 a-f
1a-f Teststreet -> Teststreet :: 1a-f
67 a-g Musterstraße -> Musterstraße :: 67 a-g
67a-g Muster straße -> Muster straße :: 67a-g
Ernst-Thäl-mann-stra-sse 8 -> Ernst-Thäl-mann-stra-sse :: 8
203 East 50th St. -> East :: 203
12th Street 123 -> 12th Street :: 123
Musterstraße 67 a-g -> Musterstraße :: 67 a-g
Musterstraße 67a-g -> Musterstraße :: 67a-g
D1 4-8 -> :: D1 4-8
Johann-G.-Gutenbergstr 22 A -> Johann-G.-Gutenbergstr :: 22 A
Johann - G. - Gutenbergstr 22 A -> Johann :: - G. - Gutenbergstr 22 A
Johann-G.-Gutenbergstraße 22 A -> Johann-G.-Gutenbergstraße :: 22 A
Johann-G.-Gutenbergstr. 22 A -> Johann-G.-Gutenbergstr :: . 22 A
King George V 3a(1) -> King George V :: 3a(1)
3a(1) King George V -> King George V :: 3a(1)
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?
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());
}
}
}
Ich freue mich auf eure Rückmeldung,
Beste Grüße.
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 930735601
Url: https://administrator.de/contentid/930735601
Ausgedruckt am: 24.11.2024 um 14:11 Uhr