将字符附加到列表字符串
Posted
技术标签:
【中文标题】将字符附加到列表字符串【英文标题】:Appending characters to a List string 【发布时间】:2012-12-05 14:26:53 【问题描述】:我的应用程序中有一个可选的自定义前缀和后缀,我想将它们添加到字符串列表中的每个项目中。我已经尝试了以下所有方法,但没有一个有效。有人能指出我正确的方向吗?
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
我哪里错了?
【问题讨论】:
【参考方案1】:目前还不清楚你为什么在这里使用StringBuilder
,或者你为什么要尝试加入。听起来像你想要的:
var suckingList = myList.Select(x => "my " + x + " sucks")
.ToList();
这是使用 LINQ 对列表中的每个项目执行投影的绝对正常方式。
【讨论】:
干得好,乔恩。谢谢。我将如何制作前缀 = "?显然是 'prefix = """;'不工作。 @Jeagr:你会逃脱它:"\"" + x
@Jeagr:已经是了。 msmvps.com/blogs/jon_skeet/archive/2011/02/17/…
也可以在表达式中使用$"my x sucks"
以获得更好的可读性
@ageroh:你现在可以 - 但这个答案是在 2012 年写的。我不会复习我在 C# 6 出现之前写的所有答案,只是为了引入字符串插值......
【参考方案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("012", prefix, s, suffix);
myNewList 现在包含正确的数据。
【讨论】:
LINQ 是一种更简单的方法 - 当您只是连接三个字符串时,使用string.Format
毫无意义。 (哦,把add
和format
改成大写字母……)
只是在考虑 string.Format 以及是否需要它。无论如何,倾向于将其用作默认值。我认为 foreach 更具描述性,但您正确的 LINQ 更简洁
@TimSchmelter:但这不是这里发生的事情 - 它只是将它们全部连接起来。我认为这里的string.Format("012", prefix, s, suffix
比直接的prefix + s + suffix
可读性差。以上是关于将字符附加到列表字符串的主要内容,如果未能解决你的问题,请参考以下文章