Poiché findstr
è obsoleto, una combinazione di find
e strcmpi
potrebbe rivelarsi utile. strcmpi
confronta le stringhe ignorando il caso delle lettere che potrebbero essere utili per i tuoi scopi. Se questo non è quello che vuoi, usa la funzione senza il trailing i
, quindi strcmp
. L'ingresso in strcmpi
o strcmp
sono la stringa per la ricerca di str
e per il vostro caso il parametro di ingresso aggiuntivo è un array di celle A
di stringhe per la ricerca. L'uscita del strcmpi
o strcmp
vi darà un vettore di logical
valori in cui ogni posizione k
indica se la stringa k
nell'array di celle A
corrisponde a str
. Dovresti quindi utilizzare find
per trovare tutte le posizioni di dove la stringa corrisponde, ma puoi ulteriormente trattenerlo specificando il numero massimo di posizioni n
e dove vincolare la ricerca, in particolare se vuoi guardare il primo o l'ultimo n
posizioni in cui la stringa corrisponde.
Se la stringa desiderata è in str
e propria matrice cellulare è memorizzato in A
, fare semplicemente:
index = find(strcmpi(str, A)), 1, 'first');
per ribadire, find
troverete tutti i luoghi in cui la stringa corrispondente, mentre il secondo e il terzo parametro raccontano si deve solo restituire il primo indice del risultato. Specificamente, questo restituirà la prima occorrenza della stringa cercata desiderata, o la matrice vuota se non può essere trovata.
Esempio 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)
Vuoi la prima occorrenza in ogni cella o per l'intero array di celle? – excaza
Riaperto dal duplicato perché questa domanda chiede di trovare la ** prima occorrenza ** della stringa, non ** tutte le occorrenze **. La risposta accettata gestisce anche la sfumatura di non essere in grado di trovare la stringa. Questa domanda ha una differenza fondamentale che porta a una soluzione diversa. – rayryeng