Заменить подстроку из списка (WindowsForms) - PullRequest
0 голосов
/ 22 октября 2019

Я прикрепил в своем списке (lb1) символ к предыдущему элементу. Буква А отделяется запятой. Можно ли заменить букву в этой строке (A -> B)? Как это можно решить? Результат в списке (lb2) должен выглядеть так, как показано ниже.

if (listBox1.Items.Cast<string>().Contains("someText"))
{
    int a = listBox1.Items.IndexOf("someText");
    listBox1.Items.RemoveAt(a);
    listBox1.Items.Insert(a, "newText");
}

enter image description here

1 Ответ

0 голосов
/ 23 октября 2019

Вот фрагмент кода для вашей новой проблемы mikee:

Вам нужно перебрать элементы списка, найти совпадение и заменить обнаруженные совпадения:

string search = "A";
string replace = "B";

for(int i = 0; i < lb1.Items.Count; i++)
{
    if(lb1.Items[i].ToString().EndsWith(search))
    {
        string item = lb1.Items[i].ToString().Replace(search, replace);
        lb1.Items[i] = item;
    }
}

Редактировать

Обратите внимание, что предыдущий фрагмент изменит все A символов в строке с B не только последним,Так что если у вас есть элемент списка, скажем JONATHAN, A , предыдущий код изменит его на JONBTHBN, B . Чтобы избежать этого, вы можете сделать:

Решение 1:

for (int i = 0; i < lb1.Items.Count; i++)
{
    if (lb1.Items[i].ToString().EndsWith(search))
    {
        int indx = lb1.Items[i].ToString().LastIndexOf(search);
        string item = lb1.Items[i].ToString().Substring(0, indx) + replace;
        lb1.Items[i] = item;
    }
}

Решение 2:

Если все вашиэлементы списка - это строки, разделенные запятыми, как на изображении выше, тогда вы можете сделать следующее:

for (int i = 0; i < lb1.Items.Count; i++)
{
    if (lb1.Items[i].ToString().EndsWith(search))
    {
        var arr = lb1.Items[i].ToString().Split(',');
        arr[arr.Length - 1] = replace;

        lb1.Items[i] = string.Join(", ", arr);
    }
}

Приносим извинения за неудобства.

Удачи.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...