向列表字符串追加字符

10

我在我的应用程序中有一个可选的自定义前缀和后缀,我想将其添加到我的字符串列表中的每个项目中。我已尝试了以下所有方法,但都不起作用。请问有人能指点我正确的方向吗?

List<string> myList = new List<string>{ "dog", "cat", "pig", "bird" };

string prefix = "my ";
string suffix = " sucks!";

StringBuilder sb = new StringBuilder();
sb.Append(suffix);
sb.Insert(0, prefix);
MyList = sb.ToString();  //This gives me red squigglies under sb.ToString();

我也尝试过:
myList = myList.Join(x => prefix + x + suffix).ToList();  //Red squigglies

并且:

sortBox1.Join(prefix + sortBox1 + suffix).ToList();  //Red squigglies

我在这里做错了什么?

2个回答

38

在这里,你使用一个 StringBuilder 并尝试连接它并不是非常清楚。看起来你想要的是:

var suckingList = myList.Select(x => "my " + x + " sucks")
                        .ToList();

这是使用LINQ对列表中的每个项目执行投影的绝对常规方式。


做得很好,Jon。谢谢。我该如何使前缀=“?”?显然,“prefix =""";”不起作用。 - Jeagr
@Jeagr:你只需要转义它:"\"" + x - Jon Skeet
1
@Jeagr:它已经是了。http://msmvps.com/blogs/jon_skeet/archive/2011/02/17/c-in-depth-2nd-edition-now-available-in-mobi-epub-kindle-format.aspx - Jon Skeet
在表达式中,为了更好的可读性,也可以使用 $"my {x} sucks" - ageroh
@ageroh:现在你可以这样做 - 但是这个答案是在2012年写的。我不会重新回顾一下C# 6发布之前我写过的所有答案,只是为了介绍字符串插值... - Jon Skeet

2
List<string> myList = new List<string>{ "dog", "cat", "pig", "bird" };
List<string> myNewList = new List<string>();

string prefix = "my ";
string suffix = " sucks!";

foreach(string s in myList)
{
     myNewList.Add(string.Format("{0}{1}{2}", prefix, s, suffix);
}

我的新列表现在包含了正确的数据。


LINQ是一种更简单的方法 - 当您只需连接三个字符串时,使用string.Format没有意义。 (哦,而且将addformat更改为大写字母...) - Jon Skeet
刚在思考string.Format是否必要。通常默认使用它。我认为foreach更具描述性,但你是对的,LINQ更简洁。 - Liam
2
@TimSchmelter:但这里并不是这样的情况——它只是将它们全部连接起来。我认为在这里使用string.Format("{0}{1}{2}", prefix, s, suffix)比直接使用prefix + s + suffix更难以阅读。 - Jon Skeet

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接