Matthias Hanft
2007-11-08 07:46:50 UTC
Hallo,
nicht unbedingt ein originäres Delphi-Problem, aber ich muß es
in Delphi programmieren :-)
Gegeben sei ein String ähnlich "Bahnhofstraße 27". Da hätte ich
nun gern zwei Strings draus, nämlich einen mit "Bahnhofstraße"
und einen mit "27".
Einfach, nicht? Pos(' ', S) und fertig.
Aaaber: So einfach ist das nicht. Für jede Lösung, die ich mir
ausdenke, fallen mir dann schon wieder Ausgangsstrings ein, bei
denen das nicht funktioniert wie z.B. "Am grünen Bahnhof 27".
Klar, Zwischenräume von hinten suchen. Das scheitert dann aller-
dings an "Bahnhofstraße 27 a".
Nächster Versuch: Von hinten her bis zur ersten Ziffer suchen
und bei Treffer bis zur ersten Nicht-Ziffer weitersuchen (das
wäre dann das letzte Zeichen der Straße, von Spaces mal abge-
sehen). Denkste: "Bahnhofstraße 25-27" (ich glaub', Hausnummern
à la "27 1/2" gibts auch noch).
Also "Ziffer" im obigen Algorithmus = [' ','0'..'9','-','/']?
("." dagegen nicht, wegen "Bahnhofstr.".)
Könnte möglicherweise gehen. Nur nicht in Mannheim, wo die
Straßen z.B. "H1" heißen (mit Hausnummer dann z.B. "H1 5").
Argh!
Jemand eine geniale Idee?
Danke & Gruß Matthias.
nicht unbedingt ein originäres Delphi-Problem, aber ich muß es
in Delphi programmieren :-)
Gegeben sei ein String ähnlich "Bahnhofstraße 27". Da hätte ich
nun gern zwei Strings draus, nämlich einen mit "Bahnhofstraße"
und einen mit "27".
Einfach, nicht? Pos(' ', S) und fertig.
Aaaber: So einfach ist das nicht. Für jede Lösung, die ich mir
ausdenke, fallen mir dann schon wieder Ausgangsstrings ein, bei
denen das nicht funktioniert wie z.B. "Am grünen Bahnhof 27".
Klar, Zwischenräume von hinten suchen. Das scheitert dann aller-
dings an "Bahnhofstraße 27 a".
Nächster Versuch: Von hinten her bis zur ersten Ziffer suchen
und bei Treffer bis zur ersten Nicht-Ziffer weitersuchen (das
wäre dann das letzte Zeichen der Straße, von Spaces mal abge-
sehen). Denkste: "Bahnhofstraße 25-27" (ich glaub', Hausnummern
à la "27 1/2" gibts auch noch).
Also "Ziffer" im obigen Algorithmus = [' ','0'..'9','-','/']?
("." dagegen nicht, wegen "Bahnhofstr.".)
Könnte möglicherweise gehen. Nur nicht in Mannheim, wo die
Straßen z.B. "H1" heißen (mit Hausnummer dann z.B. "H1 5").
Argh!
Jemand eine geniale Idee?
Danke & Gruß Matthias.