как удалить из символьного массива сразу несколько слов?
например есть 6 слов и нужно удалить с 3 по 5
И копируешь весь "хвост", начиная со следующего за последним символа в место начала первого.
Код:
private void Form1_Load(object sender, EventArgs e)
{
//строка слов
this.textBox1.Text = "one two three four five six seven eight nine ten one ten two seven";
//переводим каретку в конец строки
this.textBox1.Select(this.textBox1.TextLength, 0);
//заполняем список слов которые убрать надо из строки
this.listBox1.Items.Add("one");
this.listBox1.Items.Add("two");
this.listBox1.Items.Add("three");
this.listBox1.Items.Add("four");
//помечаем эти слова выбранными, чтобы потом исключить из строки(такой метод в качестве примера не обязателен)
for (int idx=0; idx<this.listBox1.Items.Count; idx++)
{
this.listBox1.SelectedIndex = idx;
}
}
private void button2_Click(object sender, EventArgs e)
{
//находим слова в строке, которые разделены пробелами
string[] ar = textBox1.Text.Split(' ');
//переводим все это в список, чтобы проще было с массивом слов работать
List<string> ls = ar.ToList<string>();
//булевый флаг
bool flag = false;
//цикл проверки на совпадении в строке(в нашем парсированном списке
do
{
flag = false;
//каждый эелмент списка проверяем на слова, кторые нужно убрать из строки
for (int idx = 0; idx < ls.Count; idx++)
{
for (int jdx = 0; jdx < listBox1.SelectedItems.Count; jdx++)
{
//если есть совпадения
if (ls[idx].Contains(this.listBox1.SelectedItems[jdx].ToString()))
{
//убираем из списка
ls.RemoveAt(idx);
//флаг указывающий что такой элемент был
flag = true;
//останавливаем цикл
break;
}
}
//останавливаем цикл
if (flag) break;
}
}
//выполняем цикл пока все вхождения не уберем
while (flag);
//обнуляем наш текст бокс на пустой
this.textBox1.Text = string.Empty;
//записываем в него все, что не исключили
for (int idx=0; idx<ls.Count; idx++)
{
this.textBox1.Text += ls[idx] + " ";
}
}
{
//строка слов
this.textBox1.Text = "one two three four five six seven eight nine ten one ten two seven";
//переводим каретку в конец строки
this.textBox1.Select(this.textBox1.TextLength, 0);
//заполняем список слов которые убрать надо из строки
this.listBox1.Items.Add("one");
this.listBox1.Items.Add("two");
this.listBox1.Items.Add("three");
this.listBox1.Items.Add("four");
//помечаем эти слова выбранными, чтобы потом исключить из строки(такой метод в качестве примера не обязателен)
for (int idx=0; idx<this.listBox1.Items.Count; idx++)
{
this.listBox1.SelectedIndex = idx;
}
}
private void button2_Click(object sender, EventArgs e)
{
//находим слова в строке, которые разделены пробелами
string[] ar = textBox1.Text.Split(' ');
//переводим все это в список, чтобы проще было с массивом слов работать
List<string> ls = ar.ToList<string>();
//булевый флаг
bool flag = false;
//цикл проверки на совпадении в строке(в нашем парсированном списке
do
{
flag = false;
//каждый эелмент списка проверяем на слова, кторые нужно убрать из строки
for (int idx = 0; idx < ls.Count; idx++)
{
for (int jdx = 0; jdx < listBox1.SelectedItems.Count; jdx++)
{
//если есть совпадения
if (ls[idx].Contains(this.listBox1.SelectedItems[jdx].ToString()))
{
//убираем из списка
ls.RemoveAt(idx);
//флаг указывающий что такой элемент был
flag = true;
//останавливаем цикл
break;
}
}
//останавливаем цикл
if (flag) break;
}
}
//выполняем цикл пока все вхождения не уберем
while (flag);
//обнуляем наш текст бокс на пустой
this.textBox1.Text = string.Empty;
//записываем в него все, что не исключили
for (int idx=0; idx<ls.Count; idx++)
{
this.textBox1.Text += ls[idx] + " ";
}
}