C# 为IEnumerable的每个成员添加前缀/后缀<;字符串>;在C中#
有没有一种简单的方法可以为IEnumerable的每个成员添加前缀或后缀?我想不出另外一种方法(输入是IEnumerable的): 但这不会让我分配回str。。。我觉得应该有更好的方法来做到这一点。这应该有效:C# 为IEnumerable的每个成员添加前缀/后缀<;字符串>;在C中#,c#,string,ienumerable,prefix,C#,String,Ienumerable,Prefix,有没有一种简单的方法可以为IEnumerable的每个成员添加前缀或后缀?我想不出另外一种方法(输入是IEnumerable的): 但这不会让我分配回str。。。我觉得应该有更好的方法来做到这一点。这应该有效: var result = inputs .Select(x => prefix + x) .ToList(); 它只需为前缀前的每个输入创建一个新字符串,然后将它们放入列表中。对于后缀,只需将前缀+x更改为x+后缀,字符串是不可
var result = inputs
.Select(x => prefix + x)
.ToList();
它只需为前缀前的每个输入创建一个新字符串,然后将它们放入列表中。对于后缀,只需将
前缀+x
更改为x+后缀
,字符串是不可变的,因此您不能随时修改它们。您可以返回一个新的列表,不过:
IEnumberable<String> AppendString (IEnumerable<String> src, String append)
{
foreach (String str in src)
yield return str + append;
}
IEnumerable AppendString(IEnumerable src,String append)
{
foreach(src中的字符串str)
收益率返回str+append;
}
值得一提的是,您的代码有两个错误:
str
变量在foreach循环中应该是只读的,并且您不能分配给它,因为字符串是不可变的,并且当您调用sb.Append(prefix).Append(str).ToString()时代码>创建一个新字符串李>
对于此类任务,您不需要StringBuilder
,因为对一个字符串执行多个串联操作时效率很高。在本例中,有几个字符串,每个字符串只需与某个变量连接一次
您可以随时添加到它们中。您只需分配结果。@SimonC,我想很清楚我的意思是“就地”添加(修改原始字符串),所以您需要返回一个新列表。我已经编辑,试图使这更清楚,请让我知道你的想法。很抱歉给您带来了困惑。谢谢!这很好用,我不知道为什么我没有看到,太长的一天。。。
IEnumberable<String> AppendString (IEnumerable<String> src, String append)
{
foreach (String str in src)
yield return str + append;
}