ドキュメンテーション

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

strtok

文字列の一部の選択

構文

token = strtok(str)
token = strtok(str, delimiter)
[token, remain] = strtok(str, ...)

説明

token = strtok(str) は、入力文字ベクトル str を左から右に解析し、その文字ベクトルの一部または全部を token に返します。空白文字を区切り記号として使用している場合、token 出力は str の先頭から開始され、先頭に区切り記号がある場合はそれらの区切り記号をスキップし、次の区切り記号または文字ベクトルの末尾までにあるすべての文字を含みます。空白文字は、スペース (ASCII 32)、タブ (ASCII 9)、キャリッジ リターン (ASCII 13) を含みます。

引数 str は、単一引用符で囲まれた文字ベクトル、単一引用符でそれぞれの要素が囲まれた文字ベクトルのセル配列、あるいはこれらのいずれかを表す変数にすることができます。strN 個の文字ベクトルで構成されるセル配列の場合、token は、str{1} から派生した token{1}str{2} から派生した token{2} というように、N 個のトークンで構成されたセル配列になります。

token = strtok(str, delimiter) は、delimiter 文字ベクトル入力を使用して区切り記号をユーザーが指定すること以外は、上記の構文と同一です。この構文を使用する場合、空白文字は、引数 delimiter に含めない限り区切り記号とは見なされません。入力 delimiter で複数の文字が指定されている場合、MATLAB® は、それぞれの文字を個別の区切り記号として扱います。つまり、その文字ベクトル全体を 1 つの区切り記号として扱うことはありません。引数 delimiter 内での文字数および順序は重要ではありません。エスケープ シーケンスを区切り記号として使用しないでください。たとえば、'\t' ではなく char(9) をタブとして使用してください。

[token, remain] = strtok(str, ...) は、token がある場合、そのトークンに続く str のその部分を remain に返します。remain には区切り記号が含まれています。入力文字ベクトル本体に区切り記号が見つからない場合、ベクトル全体 (先頭の区切り文字を除く) が token に返され、remain は空の文字ベクトル ('') になります。str が文字ベクトルのセル配列である場合、token はトークンのセル配列、remain は残った部分のセル配列です。

例 1

この例では、既定の空白文字を区切り記号として使用します。文字ベクトルの先頭の空白文字は token 出力に含まれていませんが、token に続く空白文字は remain に含まれています。

s = '  This is a simple example.';
[token, remain] = strtok(s)

token =
This
remain =
 is a simple example.

例 2

HTML コードの文字ベクトルを、文字 < および > で区切ったセグメントに分割します。while ループを記述して、文字ベクトルを解析し、各セグメントを表示します。

s = sprintf('%s%s%s%s', ... 
'<ul class=continued><li class=continued>', ...
'<pre><a name="13474"></a>token = strtok', ...
'(''str'', delimiter)<a name="13475"></a>', ...
'token = strtok(''str'')');

remain = s;

while true
   [str, remain] = strtok(remain, '<>');
   if isempty(str),  break;  end
   disp(sprintf('%s', str))
end

出力は、以下のとおりです。

ul class=continued
li class=continued
pre
a name="13474"
/a
token = strtok('str', delimiter)
a name="13475"
/a
token = strtok('str')

例 3

strtok を文字ベクトルのセル配列に使用して、token に文字ベクトルのセル配列を、remain に文字配列を返します。

s = {'all in good time'; ...
     'my dog has fleas'; ...
     'leave no stone unturned'};

remain = s;

for k = 1:4
   [token, remain] = strtok(remain);
   token
end

出力は、以下のとおりです。

token = 
    'all'
    'my'
    'leave'
token = 
    'in'
    'dog'
    'no'
token = 
    'good'
    'has'
    'stone'
token = 
    'time'
    'fleas'
    'unturned'

R2006a より前に導入

この情報は役に立ちましたか?