Как сравнить специальные символы, такие как '(', '/', '' в Matlab - PullRequest
0 голосов
/ 30 августа 2011

У меня есть массив символов, cA, и каждая запись каждого хранит один символ, такой как 'a', '(', '[' и ' '.Моя программа будет выполнять итерацию этого массива и выполнять операции определенного типа в зависимости от содержимого каждой записи.Например,

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

Для таких символов, как 'a', 'b', вышеописанная операция сравнения символов является тривиальной.Но как я могу обрабатывать специальные символы, такие как '(', '[' и ' ' (пробел) Могу ли я написать что-то, например

if (cA(i) == ' ')      
if (cA(i) == '(')

Ответы [ 2 ]

2 голосов
/ 30 августа 2011

В общем, я предлагаю сравнивать строки, используя 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 голосов
/ 30 августа 2011

Вы пробовали и получили ошибку?Потому что это работает для меня:

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

Это печатает left paren, как и ожидалось.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...