string の先頭のみを取得したいのですが、Java のように startsWith('It-is') と言うことができる同等の matlab はありますか?
ありがとう
string の先頭のみを取得したいのですが、Java のように startsWith('It-is') と言うことができる同等の matlab はありますか?
ありがとう
関数を使用しstrfind
て、ある文字列が別の文字列で始まるかどうかを判断できます。この関数は、探している文字列が出現するたびに開始インデックスを返すか、文字列が見つからない場合は空の配列を返します。
S = 'Find the starting indices of the pattern string';
strfind(S, 'It-is')
文字列が で始まる場合、'It-is'
返される配列の最初のインデックスはstrfind
1 (つまり、最初の文字のインデックス) になります。
私に最適なオプションは次のとおりです。
~isempty(regexp(s, '^It-is', 'once'))
~isempty を使用すると、次のように論理 OR または AND で式を使用できます。
if ~isempty(regexp(s, '^It-is', 'once')) || ~isempty(regexp(s, '^It-was', 'once'))
「once」パラメーターは、最初に一致を見つけたら文字列をスキャンし続けないようにするための最適化です。
strfind の問題点は、非スカラーの結果が返されるため、使用できる場所が制限されることです。正規表現を次のように使用する方が簡単です。
s = 'It-is true.';
if regexp(s, '^It-is')
disp('s starts with "It-is"')
end
s がセルの場合、regexp と strfind はセル配列を返すことを追加します。
この場合、次の 2 つのバリアントのいずれかを使用できます。
pos = strfind(s, 'It-iss');
if (~isempty(pos{1,1}))
disp('s starts with "It-is"')
end
また
pos = regexp(s, '^It-is');
if (~isempty(pos{1,1}))
disp('s starts with "It-is"')
end
regexp
またはの戻り値を bool に直接キャストすることはできませんstrfind
。これは、一致するものがない場合に戻り、空の cell を含むセル配列regexp
をstrfind
返すためです。最初のセルにアクセスするには、ecurled 中かっこ operator を使用する必要があります。{[]}
pos{1,1}