Matlab

2011-08-30 10 views
0

私は文字配列cAとそれぞれの各エントリは'a','(','['のような単一の文字を格納する '('、 '/'、 ''などの特殊文字を比較する方法' '。 私のプログラムは、この配列を反復し、各エントリの内容に基づいて、操作の特定の種類を実行する。例えば、文字のMatlab

if (cA(i) == 'a') do sth; end 

など'a''b'、上記文字の比較動作は自明です。 しかし、私はどのように特殊文字を扱うことができます'(''['' '(空白) 私はあなたがそれを試してみて、エラーを取得しました、このような

if (cA(i) == ' ')  
if (cA(i) == '(') 
+0

はいできます。あなたの意図する用途に応じて、これをベクトル化することもできます:例えば、 'idx =(cA == 'a')'は配列が文字 'a'と等しいすべてのインデックスを返します。 – Amro

答えて

2

一般に、STRCMPを使用して文字列を比較することをお勧めします。

if strcmp(cA(i),'('), doSomething, end 

具体的には、SWITCH/CASEという文をお勧めします。 Matlabでは、これはcのようなものではないことに注意してください。代わりに、「良い」ケースだけが実行されます。私の経験上、これは読みやすさに役立ちます。したがって

for myChar = cA %# this loops over every char in the 1-by-n string 
    switch myChar 
     case 'a' 
     do something 
     case 'b' 
     case {'c','d'} %# this is how you handle multiple chars with the same outcome 
     otherwise 
     error('char %s not handled',myChar) %# don't forget this 
    end 
end 
0

として何かを書くことができますか?それは私のために働くので:

c = '('; 
if(c == '(') 
    disp('left paren') 
end 

これは期待どおりleft parenを印刷します。