我如何在文本之后添加字符串,如果它还没有?

时间:2011-01-17 03:00:36

标签: c# winforms text

如果字符串不存在,如何在文本后添加字符串?

我有一个包含以下行的文本框:

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

如何在thumbnail:example.com之后将name:username添加到第二行和第三行但不是第一行呢?

2 个答案:

答案 0 :(得分: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));


    }

答案 1 :(得分:-1)

var lines = textbox.Text.Split(new string [] {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);

希望这有帮助。