Могут ли названия улиц быть числами? Э.Г.
1234 45TH ST
или даже
1234 45 ST
Вы можете разобраться с первым случаем, описанным выше, но со вторым сложно.
Я бы разделил адрес на пробелы, пропустил все ведущие компоненты, которые не содержат буквы, а затем присоединился бы к остатку. Я не знаю Ruby, но вот пример Perl, который также подчеркивает проблему с моим подходом:
#!/usr/bin/perl
use strict;
use warnings;
my @addrs = (
'6223 1/2 S FIGUEROA ST',
'1234 45TH ST',
'1234 45 ST',
);
for my $addr ( @addrs ) {
my @parts = split / /, $addr;
while ( @parts ) {
my $part = shift @parts;
if ( $part =~ /[A-Z]/ ) {
print join(' ', $part, @parts), "\n";
last;
}
}
}
C:\Temp> skip
S FIGUEROA ST
45TH ST
ST