ドキュメンテーション

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

strfind

文字列内の文字の検出

構文

k = strfind(str,pattern)
k = strfind(str,pattern,'ForceCellOutput',cellOutput)

説明

k = strfind(str,pattern) は、str 内で pattern の出現を検索します。出力 k は、str における pattern の各出現の開始インデックスを示します。pattern が見つからない場合、strfind は空の配列 [] を返します。関数 strfind は大文字小文字を区別して検索を実行します。

  • str が文字ベクトルまたは string スカラーの場合、strfinddouble 型のベクトルを返します。

  • str が文字ベクトルの cell 配列または string 配列の場合、strfinddouble 型のベクトルの cell 配列を返します。

k = strfind(str,pattern,'ForceCellOutput',cellOutput) は、cellOutput が true の場合、str が文字ベクトルでも、強制的に strfindk を cell 配列として返します。

すべて折りたたむ

文字ベクトル内で、パターンの出現箇所の開始インデックスを求めます。

まず、文字ベクトルを作成します。

str = 'Find the starting indices of a pattern in a character vector';

パターン in を検索します。

k = strfind(str,'in')
k = 1×4

     2    15    19    40

str には、このパターンのインスタンスが 4 つあります。

パターン In を検索します。

k = strfind(str,'In')
k =

     []

strfind では大文字小文字が区別されるため、このパターンは見つかりません。k は空の配列になります。

str 内の空白を検索します。

k = strfind(str,' ')
k = 1×10

     5     9    18    26    29    31    39    42    44    54

str には、10 箇所の空白があります。

文字ベクトルの cell 配列内で、パターンの出現箇所の開始インデックスを求めます。

文字ベクトルの cell 配列を作成します。

str = {'How much wood would a woodchuck chuck';
       'if a woodchuck could chuck wood?'};

str 内でパターン wood を検索します。

idx = strfind(str,'wood')
idx = 2x1 cell array
    {1x2 double}
    {1x2 double}

出力 cell 配列を調べてこのパターンのインスタンスを見つけます。

idx{:,:}
ans = 1×2

    10    23

ans = 1×2

     6    28

パターン wood は、1 番目の文字ベクトルのインデックス 10 と 23 に出現し、2 番目の文字ベクトルのインデックス 6 と 28 に出現します。

文字ベクトル内のパターンの出現箇所を検索します。strfind に、出現箇所のインデックスを cell 配列で返すように強制します。次にインデックスを表示します。

文字ベクトルを作成し、パターン ain の出現箇所を検索します。

str = 'The rain in Spain.';
k = strfind(str,'ain','ForceCellOutput',true)
k = 1x1 cell array
    {1x2 double}

strfind は、数値配列を含むスカラー セルを返します。このセルには、str におけるパターン ain の出現箇所のインデックスが含まれています。セル内の数値配列にアクセスするには、中かっこを使用します。

k{1}
ans = 1×2

     6    15

入力引数

すべて折りたたむ

検索対象のデータ。文字ベクトル、文字ベクトルの cell 配列または string 配列として指定します。

データ型: char | cell | string

検索パターン。文字ベクトルまたは string スカラーとして指定します。

データ型: char | string

出力を cell 配列で返すことを強制するかどうかのインジケーター。falsetrue0 または 1 として指定します。

データ型: logical

出力引数

すべて折りたたむ

pattern の出現のインデックス。配列として返されます。pattern が見つからない場合、k は空の配列 [] となります。

  • str が文字ベクトルまたは string スカラーの場合、kpattern の各出現のインデックスを示す double のベクトルです。

  • str が文字ベクトルの cell 配列または string 配列の場合、k は cell 配列です。str のテキストごとに、k の対応するセルに、pattern の各出現のインデックスを示す double のベクトルが格納されます。

ヒント

  • pattern が文字を含まない文字ベクトルまたは string スカラー ('' または "") の場合、strfind は空の配列を返します。

  • R2016b 以降、string 配列内のパターンの検索には関数 contains を使用することを推奨します。

拡張機能

R2006a より前に導入