Реализовать бит-стаффинг, т. е. найти в сообщении пять единиц и после них вставить ноль - C#
Формулировка задачи:
Нужно сделать бит-стаффинг, то есть найти в сообщении пять единиц и после них вставить ноль.
Например:
Входное сообщение 10011111101111100
Выходное сообщение 10011111Но проблема в том, что в цикле while с break прога заменяет лишь первые пять единиц. Без break получается бесконечный цикл, так как он находит 11111 заменяет на 111110 и снова находит то что заменил и вставляет туда же 1111100 и так бесконечно.
Если сделать так fullString = fullString.Insert(index, "******"), то прога работает прекрасно без break! С break естественно заменяет только первые найденные.
0
10111110
00 Пытался сделать вот так:private void button1_Click(object sender, EventArgs e)
{
byte q = 0;
string s = textBox1.Text;
string ps = "11111";
char s0 = ps[0];
char s1 = ps[1];
StringBuilder Rez = new StringBuilder(s);
for (int i = 1; i < s.Length; i++)
{
switch (q)
{
case 0:
{
if (s[i] == s0)
q = 1;
else
q = 0;
}
break;
case 1:
{
if (s[i] == s0) q = 1;
else
if (s[i] == s1) q = 2;
else q = 0;
}
break;
case 2:
{
if (s[i] == s0) q = 1;
else q = 0;
}
break;
}
}
string fullString = textBox1.Text;
string subString = "11111";
int index = 0;
while (fullString.IndexOf(subString, index) >= 0)
{
index = fullString.IndexOf(subString, index);
fullString = fullString.Remove(index, 5);
fullString = fullString.Insert(index, "111110");
break;
}
textBox3.Text = fullString;
}Решение задачи: «Реализовать бит-стаффинг, т. е. найти в сообщении пять единиц и после них вставить ноль»
textual
Листинг программы
private void button1_Click(object sender, EventArgs e)
{
string s = textBox1.Text;
s = s.Replace("11111", "111110");
textBox3.Text = s;
}