Member 10410972 Ответов: 3

Добавление элементов из поле textbox2 - многострочный в список listbox1 , где предметы stsrts с содержимым текстового поля textbox1? С#


Всем привет.
Мне нужен код для добавления элементов из textBox2 - многострочный в список listbox1 , где детали начинается с содержимым текстового поля textbox1? С#

Этот код ниже я использую для добавления элементов из многострочный textBox2 в listBox1, и это работает.
Но я хочу, чтобы элементы в listBox1, которые я добавил из textBox2, начинались с содержимого в textBox1. Спасибо.

private void button1_Click(object sender, EventArgs e)
{
    string[] s =  Regex.Split(textBox2.Text, "\r\n");            
    listBox1.Items.AddRange(s);
}


Пример:
if the content textBox1 = A
    content TextBox2 - multiline = something
                                   something 1
                                   something 2
                                   something 3

The result in listBox1 = A something
                         A something 1
                         A something 2
                         A something 3


Что я уже пробовал:

private void button1_Click(object sender, EventArgs e)
{
    string[] s =  Regex.Split(textBox2.Text, "\r\n");            
    listBox1.Items.AddRange(s..StartsWith(textBox1.Text));
}

3 Ответов

Рейтинг:
21

OriginalGriff

Попробуй:

listBox1.Items.AddRange(textBox2.Lines.Select(l => textBox1.Text + " " + l).ToArray());


Member 10410972

Большое вам спасибо! Отлично работает!

OriginalGriff

Пожалуйста!

Рейтинг:
2

#realJSOP

0) Почему вы используете регулярное выражение для разделения строки? Там есть струна.Сплит-метод, который намного быстрее.

1) Попробуйте сделать это таким образом.

if (textbox2.Text.Length > 0)
{
    // split the text in textbox2
    string[] parts = textbox2.Text.Split(new char[]{'\r','\n'});

    // get the text from textbox1
    string prefix = textbox1.Text;
    // add a space if it doesn't already end with one
    prefix = (prefix.EndsWith(" "))?prefix : string.Concat(prefix, " ");

    // rebuild our textbox2 string
    string newText = string.Empty;
    for (int i = 0; i < parts.Length; i++)
    {
        newText = string.Concat(newtext, prefix, parts[i]);
        if (i != parts.Length -1)
        {
            newtext = string.Concat(newText, "\r\n");
        }
    }
    textbox2.Text = newText;
}


Рейтинг:
1

Member 10410972

Прошу прощения, если у меня есть еще один вопрос. Как предотвратить дублирование элементов в listBox1? Спасибо.

listBox1.Items.AddRange(textBox2.Lines.Select(l => textBox1.Text + " " + l).ToArray());


[no name]

Вы можете иметь столько вопросов, как вам нравится. Задавать вопросы в качестве решения другого вопроса-это не то, как задать вопрос. LINQ также имеет отличительные черты.

Karthik_Mahalingam

задавать вопрос