1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
#!/usr/bin/perl
use strict;
use warnings;
use utf8;
work('Musterstraße');
work('Dr.-Musterstraße');
work('Wilhelm-Wisser-Weg');
work('St. Aegidienstraße');
work('Meyerstraße');
work('Müllerstraße');
print "wir haben fertig...\n";
sub work
{
my $value=shift;
print $value." - ###".name_linearisierung($value)."#\n";
}#end-work
# bereinigen von Straßennamen um diese sicherer vergleichen zu können
sub name_linearisierung
{
my $str=shift;
# entfernen von Leerzeichen
$str =~ s/ //g;
# entfernen von Bindestrichen
$str =~ s/-//g;
# konvertierung von Sonderzeichen
$str =~ s/Ü/Ue/g;
$str =~ s/Ä/Ae/g;
$str =~ s/Ö/Oe/g;
$str =~ s/\x{1E9E}/SZ/g; # U+1E9E
$str =~ s/ß/sz/g;
$str =~ s/ü/ue/g;
$str =~ s/ä/ae/g;
$str =~ s/ö/oe/g;
return $str;
} # end-streetname_convert
Malformed UTF-8 character (1 byte, need 2, after start byte 0 ...
2014-12-04T07:58:45 jan99Mit dem Auskommentieren funktioniert es !
1
2
3
4
5
$str =~ s/[dD]r./doktor/g;
# konvertierung von St. in Sankt
$str =~ s/[sT]t./sankt/g;
# Meyer auch mit ei
$str =~ s/[Mm]eyer/meier/g;
QuoteC:\Perl-Tools\einfacher test>perl test.pl
Musterstra▀e - ###musanktrsanktasze#
Dr.-Musterstra▀e - ###doktormusanktrsanktasze#
Wilhelm-Wisser-Weg - ###wilhelmwisserweg#
St. Aegidienstra▀e - ###st.aegidiensanktasze#
Meyerstra▀e - ###meiersanktasze#
M³llerstra▀e - ###muellersanktasze#
wir haben fertig...
$str =~ s{ \b [Ss]t \. }{sankt}gx;
binmode(STDOUT, ':encoding(cp437)') if $^O eq 'MSWin32';
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
my $str=shift;
$str = lc($str)
# entfernen von Leerzeichen
$str =~ s/ //g;
# konvertierung von v. in von
# muss VOR der Bindestrich bereinigung erfolgen
$str =~ s/\b[vV]\.-/von/g;
$str =~ s/\b[vV]\-/von/g;
$str =~ s/v-/von/g;
# entfernen von Bindestrichen
$str =~ s/-//g;
...
Eingabe:
[code]work('von-Meyerstraße');
work('v.-Meyerstraße');
work('v-Meyerstraße');
work('Gustav-von-Meyerstraße');
work('Gustav-v-Meyerstraße');
work('Gustav-v.-Meyerstraße');
Quotevon-Meyerstra▀e - ###vonmeierstrasze#
v.-Meyerstra▀e - ###vonmeierstrasze#
v-Meyerstra▀e - ###vonmeierstrasze#
Gustav-von-Meyerstra▀e - ###gustavonvonmeierstrasze#
Gustav-v-Meyerstra▀e - ###gustavonvonmeierstrasze#
Gustav-v.-Meyerstra▀e - ###gustavonvonmeierstrasze#
2014-12-05T16:13:24 jan99ich habe noch etwas weiter gebastelt und bin verwundert das meine "von" jetzt teilweise doppelt vorkommen.
Code (perl): (dl )1 2 3 4 5 6# konvertierung von v. in von # muss VOR der Bindestrich bereinigung erfolgen $str =~ s/\b[vV]\.-/von/g; $str =~ s/\b[vV]\-/von/g; $str =~ s/v-/von/g;
$str = lc($str) # ohne ; !!