Thread Wie ähnlich sind meine Strings: es geht hier nicht (nur) um Unterwäsche (14 answers)
Opened by root at 2006-01-31 19:33

Matze
 2006-01-31 21:44
#62535 #62535
User since
2005-08-29
222 Artikel
BenutzerIn
[Homepage] [default_avatar]
Ich würde das spontan warscheinlich so machen:
Den Text anhand von Leerraum trennen und in einem Array jedes Wort speichern:
Code (perl): (dl )
my @wort = split " ",$text;

Dann würde ich in einer foreach-Schleife die Benutzereingabe mit jedem Element aus @wort anhand von Regular Expressions testen und wenn das Element mit der Benutzereingabe übereinstimmt dann würde ich es in einem neuen Array speichern.
Code (perl): (dl )
1
2
3
4
5
6
7
my ($i, @treffer) = (0);
foreach (@wort) {
  if ($benutzer_eingabe =~ /$_/i) {
    $treffer[$i] = "$_";
    $i++;
  }
}

Und jetzt ist es dir überlassen ob du das Array sortieren willst oder nicht.
Unsortiert ist bei den @treffer n das im Text als erstes vorkommende Wort mit dabei.

Allerdings ist damit das Problem mit Meier und Meyer immer noch nicht gelöst.
Aber mit einem einfachen Algorithmus müsste das auch nicht schwer sein.
Wenn du die Variable anhand von $benutzer_eingabe =~ s/y/i/g; oder ähnlichem in einer for/foreach-Schleife die über der obigen foreach-Schleife liegt behandelst, können auch solche Treffer erzielt werden.

Code (perl): (dl )
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
#!/usr/bin/perl
#
use strict;

my $text =
  "Hier ist Meier, und hier ist Meyer.\n".
  "Die Namen hören sich gleich an, aber trotzdem\n".
  "können sie beide zu den Treffern gezählt werden.";

my @wort = split " ",$text;

print "Bitte geben sie das Suchwort ein: ";
chomp(my$input = <STDIN>);

$input = "Meyer" if ! $input;

my @treffer;
my $i = 0;

for ($input =~ s/y/i/g,$input =~ s/s/x/g) {
  foreach (@wort) {
    if ($input =~ /$_/i) {
      $treffer[$i] = "$_";
      $i++;
    }
  }
}

print "\nTreffer: @treffer\n";
<STDIN>;


Das Programm istnicht getestet, ich weiß nicht ob das mit der for-Schleife und den Regular-Expressions funktioniert, sonst dürfte aber alles klappen.

MfG. Matze
Mit freundlichen Grüßen: Matze

View full thread Wie ähnlich sind meine Strings: es geht hier nicht (nur) um Unterwäsche