如果字符串不存在,如何在文本后添加字符串?
我有一个包含以下行的文本框:
name:username thumbnail:example.com message:hello
name:username message:hi
name:username message:hey
如何在thumbnail:example.com
之后将name:username
添加到第二行和第三行但不是第一行呢?
答案 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);
希望这有帮助。