2011-01-17 7 views
2

文字列が既に存在しない場合は、文字列の後に文字列を追加するにはどうすればよいですか?テキストの後に文字列を追加するにはどうすればいいですか?

私は、次の行を含むテキストボックスがあります。

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

私は2番目と三行目ではなく、最初の行にname:usernamethumbnail:example.comを追加することができますどのように?

+0

これらはすべてサムネイル、ユーザー名、メッセージが完全に動的であることを示しています。 – user556396

+0

すべての行は、a) 'name:XXX thumbnail:YYY message:ZZZ'またはb)' name:XXX message:ZZZ'の形式であるといいますか? – Ani

+0

はい、それは本当です。 – user556396

答えて

3

編集:あなたがテキストボックスから読んでいることに気付かなかった - 私の例を使用するには、テキストボックス行を1つの文字列に結合する必要があります。 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

VAR線= 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); 

これが役に立ちます。