Überprüfen, ob ein string enthält nur ein Wort, doch nur in bestimmter position?

Wie kann ich überprüfen, ob ein string enthält einen substring, aber nur in einer bestimmten position?

Beispiel-string:

Was ist Ihre Lieblings - Farbe? meine [Lieblings -] - Farbe ist blau

Wenn ich wollte, um zu überprüfen, ob der string enthalten ein bestimmtes Wort, das ich in der Regel tun dies:

var
  S: string;
begin
  S := 'What is your favorite color? my [favorite] color is blue';
  if (Pos('favorite', S) > 0) then
  begin
    //
  end;
end;

Was ich brauche ist, um zu bestimmen, wenn das Wort Lieblings - besteht in der Zeichenfolge zu ignorieren, aber wenn es erscheint, innerhalb der [ ] - Symbol, das in den obigen code-Beispiel eindeutig nicht tun.

Also, wenn wir den code in einen boolean-Funktion, die einige Beispiel-Ergebnisse würden wie folgt Aussehen:

WAHR: Was ist Ihre Lieblings - Farbe? meine [meine Lieblings -] - Farbe ist blau

WAHR: Was ist Ihre Lieblings - Farbe? meine [bla bla] - Farbe ist blau

FALSCH: Was ist Ihre bla bla Farbe? meine [einige Lieblings -] - Farbe ist blau

Den ersten beiden Beispielen oben sind wahr, weil das Wort Favorit ist außerhalb des [] - symbols, ob es innerhalb oder nicht.

Dem 3. Beispiel ist falsch, weil, obwohl es ist das Wort, Liebling, es wird nur angezeigt in der [ ] Symbole - wir sollten nur prüfen, ob es existiert außerhalb der Symbole zu stellen.

Also brauche ich eine Funktion, um zu bestimmen, ob oder nicht ein Wort (Favorit in diesem Beispiel) wird in einem string, aber ignorieren die Tatsache, ob das Wort umgeben ist, innen [ ] Symbole.

Ideen: 1) teilen Sie die Zeichenfolge auf der \s und lassen für das 4. element. 2) Überprüfen Sie für ` Liebling ` (beachten Sie die Leerzeichen um das Wort). 3) teilen Sie die Zeichenfolge auf das Fragezeichen ? und dann prüfen, ob es hält favorite.
Suche nach '[', wenn gefunden Suche ']', löschen Sie die in-zwischen, darunter '[]', Suche für den Favoriten.
Oder einen regulären Ausdruck verwenden (mit Einheiten im XE) mit einem regex der '\b' + wordtofind + '\b'. Die einzige Sache, die Sie achten müssen ist Is it your favorite?, wo die ? würde es nicht passen.
Erweitern @Ken Ahnung von regex, this möglicherweise eine inspiration.

InformationsquelleAutor | 2012-09-11

Schreibe einen Kommentar