Octaveには、セル配列内に文字列が最初に現れる位置が返されますか?Octave - セル配列に文字列が最初に現れる位置を返す
私はfindstr
を見つけましたが、これは、私が望まないベクトルを返します。私はindex
が何をしたいのですが、それは文字列のためだけに働きます。
このような機能がない場合は、どうすればいいですか?
Octaveには、セル配列内に文字列が最初に現れる位置が返されますか?Octave - セル配列に文字列が最初に現れる位置を返す
私はfindstr
を見つけましたが、これは、私が望まないベクトルを返します。私はindex
が何をしたいのですが、それは文字列のためだけに働きます。
このような機能がない場合は、どうすればいいですか?
findstr
が推奨されなくなりましたので、find
とstrcmpi
の組み合わせが役立つことがあります。 strcmpi
は、目的に合った文字の大文字小文字を無視して文字列を比較します。これがあなたの望むものでない場合は、末尾にi
の関数を使用してください。したがって、strcmp
です。 strcmpi
またはstrcmp
に入力str
検索する文字列であり、あなたのケースのための追加の入力パラメータは、で検索する文字列のセル配列A
である。strcmpi
またはstrcmp
の出力はあなたにそれぞれの場所がk
logical
値のベクトルを与えますセル配列A
の文字列k
がstr
と一致するかどうかを示します。文字列が一致した場所をすべて見つけるにはfind
を使用しますが、最大文字数n
を指定して検索を制限する場所を指定することでさらに制限できます。具体的には、最初または最後の文字を表示する場合はn
文字列が一致した場所。
目的の文字列はstr
であり、あなたのセルアレイがA
に格納され、単純に行う場合は、次の2番目と3番目のパラメータが教えてくれながら
index = find(strcmpi(str, A)), 1, 'first');
繰り返すと、find
は、文字列が一致したすべての場所を検索します結果の最初のインデックスのみを返すようにします。具体的には、これは検索された文字列の最初の出現を返します。見つからない場合は空の配列を返します。
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)
あなたは、各セルまたはセル配列全体の最初のオカレンスをしたいですか? – excaza
この質問は、**すべての出現**ではなく、文字列の最初の出現**を探すよう求められているので、重複から再開しました。受け入れられた答えは、文字列を見つけることができないというニュアンスも処理します。 この質問には基本的な違いがあり、異なる解決策につながります。 – rayryeng