Индекс условия, которое удовлетворялось внутри оператора if

Используйте \b для границ слов:

sed -i 's/\boldtext\b/newtext/g' <file>
-2
задан Arnav Ramkrishnan 13 July 2018 в 04:28
поделиться

3 ответа

Если вы используете

if((myC=command[i]) =='H' ||
   (myC=command[i]) =='h' ||
   (myC=command[i]) =='C' ||
   (myC=command[i]) =='c')

, то значение успешного выражения закончится в myC, так как оценка в цепочке «или» останавливается при первом истинном подвыражении.

Если вы сделаете еще один шаг, вы можете получить числовое значение, идентифицирующее подвыражение по индексу.

if(((myC=1), command[i]) =='H' ||
   ((myC=2), command[i]) =='h' ||
   ((myC=3), command[i]) =='C' ||
   ((myC=4), command[i]) =='c')

То же понятие, первая успешная субэкспрессия является последней оценкой и , гарантирует, что для сравнения используется только вторая часть.

2
ответ дан Yunnosch 17 August 2018 в 13:41
поделиться
  • 1
    зачем использовать переменную "myC" для сохранения некоторого значения, которое уже присутствует в другой переменной «команда [i]». Вы можете просто проверить значение & quot; команды [i] & quot; и вы узнаете, какое из условий было удовлетворено. – Prakash Bansal 13 July 2018 в 04:36
  • 2
    Хороший момент, я разработал. – Yunnosch 13 July 2018 в 04:38
  • 3
    Этот лучше. :) – Prakash Bansal 13 July 2018 в 04:41
  • 4
    Нужно исправить хотя ... ;-) – Yunnosch 13 July 2018 в 04:41
  • 5
    Как это отличается от использования значения command[i]? Вы в конечном итоге сравниваете myC со значением, которое может быть сохранено в char в любом случае. Вы также можете делать if ((myC='H'), command[i]) == 'H' || ... – Tibrogargan 13 July 2018 в 04:44

Другой вариант - присвоить значение. Вы можете использовать switch, башню if..else или функцию с операторами return. Вот версия с функцией:

int classify( char command )
{
    switch( command )
    {
    case 'H': return 1;
    case 'h': return 2;
    case 'C': return 3;
    case 'c': return 4;
    default : return 0;
    }
}

void func(void)
{
    int result = classify( command[i] );
    if ( result )
    {
         // use result value here as appropriate
    }
}

. На самом деле также было бы возможно использовать перечислитель вместо магических чисел.

0
ответ дан M.M 17 August 2018 в 13:41
поделиться

Просто сделайте это -

if(command[i]=='H' or command[i]=='h' or command[i]=='C' or command[i]=='c'){
        print command[i]; //use whatever command is appropriate for printing
        do something;
    }
0
ответ дан mfromla 17 August 2018 в 13:41
поделиться
Другие вопросы по тегам:

Похожие вопросы: