Как добавить строку после текста, если ее там еще нет? - PullRequest
3 голосов
/ 17 января 2011

Как я могу добавить строку после текста, если строка еще не существует?

У меня есть текстовое поле со следующими строками:

name:username thumbnail:example.com message:hello
name:username message:hi
name:username message:hey

как я могу добавить thumbnail:example.comпосле name:username до второй и третьей строки, но не до первой строки?

Ответы [ 2 ]

3 голосов
/ 17 января 2011

Редактировать: не заметил, что вы читаете из текстового поля - вам придется объединить строки текстового поля в одну строку, чтобы использовать мой пример.Вы можете сделать это с помощью string.join () Попробуйте это ... это предполагает, что в имени пользователя не должно быть пробелов.Вероятно, есть много лучших / более эффективных способов сделать это, но это должно работать.

    var sbOut = new StringBuilder();
    var combined = String.Join(Environment.NewLine, textbox1.Lines);
    //split string on "name:" rather than on lines
    string[] lines = combined.Split(new string[] { "name:" }, StringSplitOptions.RemoveEmptyEntries);
    foreach (var item in lines)
    {
        //add name back in as split strips it out
        sbOut.Append("name:");
        //find first space
        var found = item.IndexOf(" ");
        //add username IMPORTANT assumes no spaces in username
        sbOut.Append(item.Substring(0, found + 1));
        //Add thumbnail:example.com if it doesn't exist
        if (!item.Substring(found + 1).StartsWith("thumbnail:example.com"))                
            sbOut.Append("thumbnail:example.com ");
        //Add the rest of the string
        sbOut.Append(item.Substring(found + 1));


    }
0 голосов
/ 17 января 2011

var lines = textbox.Text.Split (новая строка [] {Environment.NewLine.ToString ()}, StringSplitOptions.RemoveEmptyEntries);

        textbox.Text = string.Empty;

        for (int i = 0; i < lines.Length; i++)
        {
            if (!lines[i].Contains("thumbnail:example.com") && lines[i].Contains("name:"))
            {
                lines[i] = lines[i].Insert(lines[i].IndexOf(' '), " thumbnail:example.com");
            }
        }

        textbox.Text = string.Join(Environment.NewLine, lines);

Надеюсь, это поможет.

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