Da findstr
veraltet ist, kann sich eine Kombination aus find
und strcmpi
als nützlich erweisen. strcmpi
vergleicht Zeichenketten durch Ignorieren des Falls der Buchstaben, die für Ihre Zwecke nützlich sein können. Wenn dies nicht gewünscht ist, verwenden Sie die Funktion ohne das nachfolgende i
, also strcmp
. Der Eingang in strcmpi
oder strcmp
sind die Zeichenfolge für str
und für Ihren Fall zu suchen, die zusätzlichen Eingabeparameter ist ein Zellenfeld A
von Strings in suchen. Die Ausgabe von strcmpi
oder strcmp
geben Ihnen einen Vektor von logical
Werten, wobei jeder Standort k
teilt Ihnen mit, ob die Zeichenfolge k
im Zellenfeld A
mit str
übereinstimmt. Sie würden dann find
verwenden, um alle Positionen zu finden, an denen die Zeichenfolge übereinstimmte, aber Sie können sie weiter beschränken, indem Sie die maximale Anzahl der Speicherorte n
angeben und wo Sie Ihre Suche einschränken können - speziell wenn Sie die erste oder letzte n
betrachten möchten Orte, an denen die Zeichenfolge übereinstimmte.
Wenn die gewünschte Zeichenfolge in str
ist und Ihr Zellenfeld in A
gespeichert sind, einfach tun:
index = find(strcmpi(str, A)), 1, 'first');
Um es zu wiederholen, find
alle Orte finden, wo die Schnur angepasst, während die zweite und dritte Parameter sagen Sie geben nur den ersten Index des Ergebnisses zurück. Insbesondere wird dadurch das erste Vorkommen der gewünschten gesuchten Zeichenfolge oder das leere Array zurückgegeben, wenn es nicht gefunden werden kann.
Beispiel Run
octave:8> A = {'hello', 'hello', 'how', 'how', 'are', 'you'};
octave:9> str = 'hello';
octave:10> index = find(strcmpi(str, A), 1, 'first')
index = 1
octave:11> str = 'goodbye';
octave:12> index = find(strcmpi(str, A), 1, 'first')
index = [](1x0)
Haben Sie das erste Vorkommen in jeder Zelle oder für das gesamte Zellenfeld wollen? – excaza
Erneut aus dem Duplikat geöffnet, da bei dieser Frage das ** erste Vorkommen ** der Zeichenfolge gesucht wird, nicht ** alle Vorkommen **. Die akzeptierte Antwort behandelt auch die Nuance, die Zeichenfolge nicht finden zu können. Diese Frage hat einen grundlegenden Unterschied, der zu einer anderen Lösung führt. – rayryeng