2017-07-10 25 views
0

私はFileNameという名前のセルを持っています。 'a'と 'b'などがそのセルに含まれています。言う、飲み物、またはジュースのいずれかを含む文字列の2つのタイプがあります。文字列の一部が別の文字列に入っていないか確認してください。

a = 'xxx_drink.txt'; 
b = 'xxx_juice.txt'; 
c = 'drink'; 
d = 'juice'; 

私がもし「C」「」は、その後、私は「」特定の変数への格納先の一部であることをif文を使用しようとしています。 'd'が 'b'の一部であれば、それを別の特定の変数に格納します。

MATLABでこれを解決するにはどうすればよいですか?

+3

あなたの質問タイトルと 'matlab'でgoogleを検索した場合、最初の結果は[findstr'](https://www.mathworks.com/help/matlab/ref/findstr.html)になります。 ['strfind'](https://www.mathworks.com/help/matlab/ref/strfind.html)。これらの機能のいずれかがお客様のニーズを満たしていますか? – Cecilia

答えて

1

contains関数は、別の文字列内で1つの文字列を検索し、論理値を返します。文字列に指定されたパターンが含まれている場合、関数はtruefalseを返します。以下を使用:

FileName = {'xxx_drink.txt', 'xxx_juice.txt'}; 
pattern = 'drink'; 
idx = contains(FileName, pattern); 

idxベクトルの最初の要素は、第二のfalseなり、trueあろう。あなたのパターンの使用が

DrinkNames = FileName(idx); 

または

DrinkNames = FileName(contains(FileName, 'drink')); 

が含まれています。また、文字列、文字列配列や文字ベクトルの代わりに、セルを使用することができ、セルの要素を取得します。

は、この機能がMatlab R2016bに導入されました。

+2

' contains 'はR2016b – EBH

+0

@EBHにのみ導入されました。この通知はリンクされたページにあります。 – Alexander

+0

私は知っていますが、その答えに言及する必要があります。 – EBH

3

あなたはstrfindを使用したい...

amatched = ''; 
a = 'xxx_drink.txt';; 
c = 'drink'; 
% Check if 'c' is a part of 'a' 
if ~isempty(strfind(a, c)) 
    amatched = a; % Assign to some variable  
end 

strfindは一致が見つからない場合は、空の配列、それゆえisemptyチェックを返します。

+0

'〜'と 'isempty':' if strfind(a、c) 'を削除することができます。どのオプションが読みやすくなっているかわからない –

+0

@ルイスメンド私は自分の疑問を明確にしていないと思う。基本的には、ジュースや飲み物の入った細胞があります。テキストファイルから読み込まれます。ジュースが文字列と一致する場合は、ジューステキストファイルのみを特定の変数に入れておき、飲み物の場合はその逆にします。 –

+0

したがって、データ 's = {'xxx_drink.txt' 'xxx_juice.txt'}; p = 'juice'; '、おそらく' ind = cellfun(@(x)〜isempty(strfind(x、p))、s)です。 s_juice = s(ind); s_nojuice = s(〜ind); ' –

関連する問題