Доброй ночи!
Задача реализовать конечный автомат, так чтобы весь текст между такими скобками "(* текст *)" и сами скобки включительно заменялись на пробел, т.е. " ".
Реализация:
public static string RemoveComments(this IEnumerable<char> elements)
{
int state = 0x0;
StringBuilder sb = new StringBuilder(elements.Count());
foreach (char element in elements)
{
switch (state)
{
case 0x0:
if (element == '(')
{
state = 0x1;
}
else
{
state = 0x0;
sb.Append(element);
}
break;
case 0x1:
if (element == '*')
{
state = 0x2;
}
else
{
state = 0x0;
sb.Append('(');
sb.Append(element);
}
break;
case 0x2:
if (element == '*')
{
state = 0x3;
}
else
{
state = 0x2;
}
break;
case 0x3:
if (element == ')')
{
state = 0x0;
sb.Append(' ');
}
else
{
state = 0x3;
}
break;
default:
break;
}
}
return sb.ToString();
}
На вход подаю "(*)" метод ничего не возвращает, а должен по идеи оставить входные данные без изменения. Вопрос где ошибка?
Во всех остальных случаях, вроде как работает правильно.
Заранее спасибо