Member 10410972 Ответов: 2

(C#) удалить все после определенного символа в многострочном текстовом поле textbox1.text ?


Hello everyone.
I wanted to remove everything after a specific character in each row in textBox1.Text multiline.
This below is the code for remove everything after specific character, but for textBox single line:
How to do it for textBox multiline?

For example,
before executing the code:

www.page.1.com/page.2/page.3
www.home.page.net/about.page
www.samepage.org/
www.text1.com/text2

I want it to look like this after executing the code:

www.page.1.com
www.home.page.net
www.samepage.org
www.text1.com

Thank you.


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

string str = textBox1.Text;
            if (str.Contains('/'))
            {
                int index = str.IndexOf('/');
                string result = str.Substring(0, index);
                textBox1.Text = result;
            }

2 Ответов

Рейтинг:
2

Pete O'Hanlon

Что вы могли бы сделать, так это зациклиться на свойстве Lines и сделать что-то вроде этого:

for (int i=0; i < textBox1.Lines.Length; i++)
{
  string line = textBox1.Lines[i];
  if (line.Contains('/'))
  {
     int index = line.IndexOf('/');
     textBox1.Lines[i] = line.Substring(0, index);
  }
}


Maciej Los

5ed!

Pete O'Hanlon

Спасибо.

TheRealSteveJudge

Короткое, но эффективное решение для Windows Forms. 5*

Pete O'Hanlon

Спасибо.

Рейтинг:
1

TheRealSteveJudge

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

http://www.page.1.com/page.2/page.3\r\nwww.home.page.net/about.page"...

Эти переносы являются \r\n

Вы получаете такие строки

var lines = Regex.Split(textBox.Text, "\r\n");

Теперь вы должны перебирать строки и получать первую часть любого URL-адреса с помощью строки.Расщеплять:
var newLines = new List<string>();

foreach (var line in lines)
{
    var firstChunk = line.Split('/')[0];

    newLines.Add(firstChunk);
}

Наконец, вы должны соединить линии с лайнбрейками.
textBox.Text = string.Join("\r\n", newLines);


Member 10410972

Спасибо, это работает.
Проблема решена.

Maciej Los

5ed!

TheRealSteveJudge

Спасибо тебе, Мацей!

Pete O'Hanlon

Мне это нравится. 5.

TheRealSteveJudge

Спасибо, Питер!