Удалить символы перед символом «|» - PullRequest
1 голос
/ 08 июля 2020

У меня есть программа, которая должна удалить все символы перед "|". Например, введите

"текст необходимо удалить | Текст должен остаться"

Пример вывода будет

«Текст должен остаться»

I код ниже. Он работает с однострочным текстом, но не работает с несколькими строками. (удаляет только текст в первой строке, остальные остаются без изменений)

Мне нужно заставить его работать с несколькими строками. Есть идеи?

 string input = richTextBox.Text;

  
  
 string output = input.Substring(input.IndexOf('|') + 1);

 richTextBox1.Text = output;
   

Ответы [ 4 ]

2 голосов
/ 08 июля 2020

Вы можете легко сделать это, используя свойство Lines и временный List<string> для хранения результата подстроки

List<string> newLines = new List<string>();
foreach (string s in richTextBox1.Lines)
{
    // If you want only the lines with the | remove the else block
    int x = s.IndexOf('|');
    if(x > -1)
        newLines.Add(s.Substring(x + 1).Trim());
    else
        newLines.Add(s);
}
richTextBox1.Lines = newLines.ToArray();
0 голосов
/ 08 июля 2020
        string input = richTextBox1.Text;
        int len = richTextBox1.Lines.Length;
        string output = "";
 
        for (int i = 0; i <len; i++)
        { 
            if(i!=len-1)
            {
                output += richTextBox1.Lines[i].Substring(input.IndexOf('|') + 1) +
                Environment.NewLine;
            }
            else
            {
                output += richTextBox1.Lines[i].Substring(input.IndexOf('|') + 1);
            }

            
        }
        richTextBox1.Text = output;
0 голосов
/ 08 июля 2020

А как насчет использования LINQ для этого? Например:

List<string> lines = yourString.Split("\n"); //Add \r if needed
List<string> smallerLines = lines.Select(x => x.Skip(x.IndexOf('|')+1));

При необходимости вы всегда можете создать одну новую строку вывода:

string finalString = String.Join(String.Empty, smallerLines);
0 голосов
/ 08 июля 2020
string output = "";        
var myArray = input.Split("\r\n");
        
        foreach(var ar in myArray)
            if(ar.Length > 0)
             output+= ar.Substring(0, ar.IndexOf('|')) + "\r\n";

Упс! Я вернул первую часть, но, полагаю, вы поняли

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