Используйте \b
для границ слов:
sed -i 's/\boldtext\b/newtext/g' <file>
Если вы используете
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')
То же понятие, первая успешная субэкспрессия является последней оценкой и ,
гарантирует, что для сравнения используется только вторая часть.
Другой вариант - присвоить значение. Вы можете использовать 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
}
}
. На самом деле также было бы возможно использовать перечислитель вместо магических чисел.
Просто сделайте это -
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;
}
command[i]
? Вы в конечном итоге сравниваете myC со значением, которое может быть сохранено в char в любом случае. Вы также можете делатьif ((myC='H'), command[i]) == 'H' || ...
– Tibrogargan 13 July 2018 в 04:44