2011-01-17 4 views
2

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

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

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

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

+0

все они отличаются значком миниатюр, именем пользователя и сообщением, полностью динамичными, я должен был упомянуть об этом. – user556396

+0

Можно ли сказать, что все строки будут иметь вид a) 'name: XXX thumbnail: YYY message: ZZZ' или b)' name: XXX сообщение: ZZZ'? – Ani

+0

Да, это правда. – user556396

ответ

3

Редактировать: Не заметил, что вы читаете из текстового поля - вам нужно будет присоединиться к строкам текстового поля к одной строке, чтобы использовать мой пример. Вы можете сделать это с помощью 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

Спасибо, с некоторыми мастерингами я использовал этот метод, и теперь он отлично работает! – user556396

-1

вар строки = 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); 

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

Смежные вопросы