5

string の先頭のみを取得したいのですが、Java のように startsWith('It-is') と言うことができる同等の matlab はありますか?

ありがとう

4

6 に答える 6

8

関数を使用しstrfindて、ある文字列が別の文字列で始まるかどうかを判断できます。この関数は、探している文字列が出現するたびに開始インデックスを返すか、文字列が見つからない場合は空の配列を返します。

S = 'Find the starting indices of the pattern string';
strfind(S, 'It-is')

文字列が で始まる場合、'It-is'返される配列の最初のインデックスはstrfind1 (つまり、最初の文字のインデックス) になります。

于 2012-05-01T12:20:26.070 に答える
3

私に最適なオプションは次のとおりです。

~isempty(regexp(s, '^It-is', 'once')) 

~isempty を使用すると、次のように論理 OR または AND で式を使用できます。

if ~isempty(regexp(s, '^It-is', 'once')) || ~isempty(regexp(s, '^It-was', 'once')) 

「once」パラメーターは、最初に一致を見つけたら文字列をスキャンし続けないようにするための最適化です。

于 2016-02-25T12:33:56.773 に答える
0

strfind の問題点は、非スカラーの結果が返されるため、使用できる場所が制限されることです。正規表現を次のように使用する方が簡単です。

s = 'It-is true.';
if regexp(s, '^It-is')
  disp('s starts with "It-is"')
end
于 2014-07-28T14:57:17.167 に答える
0

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 を含むセル配列regexpstrfind返すためです。最初のセルにアクセスするには、ecurled 中かっこ operator を使用する必要があります。{[]}pos{1,1}

于 2015-06-20T12:13:27.150 に答える