Main Content

strtok

文字列の一部の選択

説明

token = strtok(str) は、空白文字を区切り文字として使用して str を左から右に解析し、テキストの一部または全部を token に返します。最初に、strtokstr の先頭の空白文字をすべて無視します。その後、strtok は空白でない最初の文字から処理を始め、次の空白文字より前のすべての文字を対象に含めます。strtok はその部分のテキストを token に返します。strtok が区切り記号として使われる空白文字を検出しない場合、token には str の末尾までの文字がすべて含められます。

token = strtok(str,delimiters) は、delimiters の文字を使用して str を解析します。delimiters に複数の文字が含まれる場合、strtokdelimiters のそれぞれの文字を個別の区切り記号として扱います。区切り記号は個別の文字であるため、delimiters のサイズは任意で、delimiters 内の文字の順序も任意です。

この構文では、空白文字を delimiters に含めない限り、空白文字は区切り記号ではありません。

[token,remain] = strtok(___) は、残りのテキストがある場合、そのテキストを remain に返します。strtok が区切り記号を検出すると、remain の先頭にその区切り記号が加えられます。strtokstr 内で区切り記号を検出しない場合、先頭の区切り記号を除く str の全体が token に返され、remain には文字が含まれません。この構文では、前述の構文の入力引数のいずれかを使用できます。

すべて折りたたむ

文字ベクトルを作成します。区切り記号である最初の空白文字までのすべてのテキストを返します。strtok は先頭の空白文字を破棄します。

chr = '     Four score and seven years ago'
chr = 
'     Four score and seven years ago'
token = strtok(chr)
token = 
'Four'

string を作成します。

str = "A horse! A horse! My kingdom for a horse!"
str = 
"A horse! A horse! My kingdom for a horse!"

'!' 文字を区切り記号として使用し、string の最初の部分を返します。

token = strtok(str,'!')
token = 
"A horse"

string 配列を作成します。

str = ["all in good time";
       "my dog has fleas";
       "leave no stone unturned"]
str = 3x1 string
    "all in good time"
    "my dog has fleas"
    "leave no stone unturned"

トークンを string 配列に返し、残りのテキストを 2 番目の string 配列に返します。

[token,remain] = strtok(str)
token = 3x1 string
    "all"
    "my"
    "leave"

remain = 3x1 string
    " in good time"
    " dog has fleas"
    " no stone unturned"

サンプル HTML コードを含む string を作成します。これを <> の文字で区切られたセグメントに分割します。これらのセグメントを string 配列に保存します。

string は二重引用符を使用して作成できます。複数の string を連結して 1 つの string にするには、plus 演算子 (+) を使用します。

str = "<ul class=continued><li class=continued>" + ...
      "<pre><a name=""13474""></a>token = strtok" + ...
      "(str,delimiter)<a name=""13475""></a>" + ...
      "token = strtok(str)"
str = 
"<ul class=continued><li class=continued><pre><a name="13474"></a>token = strtok(str,delimiter)<a name="13475"></a>token = strtok(str)"

コード セグメントを格納するための空の string 配列を作成します。

segments = strings(0)
segments = 

  0x0 empty string array

str をセグメントに分割します。残りの HTML テキスト上で strtok を繰り返し呼び出す、while ループを作成します。この while ループは、解析するテキストがなくなると終了します。

remain = str;
while (remain ~= "")
   [token,remain] = strtok(remain, '<>');
   segments = [segments ; token];
end

コード セグメントを表示します。

segments
segments = 9x1 string
    "ul class=continued"
    "li class=continued"
    "pre"
    "a name="13474""
    "/a"
    "token = strtok(str,delimiter)"
    "a name="13475""
    "/a"
    "token = strtok(str)"

入力引数

すべて折りたたむ

入力テキスト。string 配列、文字ベクトルまたは文字ベクトルの cell 配列として指定します。

データ型: string | char | cell

区切り記号。string 配列、文字ベクトル、または文字ベクトルの cell 配列として指定します。strtok は個々の文字を区切り記号として扱うため、delimiters のサイズは任意で、含まれる文字の順序も任意です。

例: strtok(str,{'YZ','X'}) は、'X''Y''Z' をそれぞれ別個の区切り記号として扱います。'YZ' が区切り記号として扱われることはありません。

データ型: string | char | cell

出力引数

すべて折りたたむ

テキストの選択した部分。string 配列、文字ベクトル、または文字ベクトルの cell 配列として返されます。token には、区切り記号以外の最初の文字から、次の区切り記号より前のすべてのテキストが含まれます。strtoken は同じデータ型です。

データ型: string | char | cell

残りのテキスト。string 配列、文字ベクトル、または文字ベクトルの cell 配列として返されます。strtokstr 内で区切り記号を検出すると、remain にはその区切り記号からテキスト末尾までのすべてのテキストが含められます。strremain は同じデータ型です。

データ型: string | char | cell

ヒント

エスケープ文字シーケンスを区切り記号として指定しないでください。strtok はエスケープ文字シーケンスを変換しません。代わりに、関数 char を使用してそうした文字を指定できます。たとえば、タブを区切り記号として指定するには、'\t' ではなく char(9) を使用します。

拡張機能

バージョン履歴

R2006a より前に導入