【问题标题】: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

我哪里错了?

【问题讨论】:

    标签: c# list append


    【解决方案1】:

    目前还不清楚你为什么在这里使用StringBuilder,或者你为什么要尝试加入。听起来像你想要的:

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

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

    【讨论】:

    • 干得好,乔恩。谢谢。我将如何制作前缀 = "?显然是 'prefix = """;'不工作。
    • @Jeagr:你会逃脱它:"\"" + x
    • 也可以在表达式中使用$"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("{0}{1}{2}", prefix, s, suffix);
    }
    

    myNewList 现在包含正确的数据。

    【讨论】:

    • LINQ 是一种更简单的方法 - 当您只是连接三个字符串时,使用 string.Format 毫无意义。 (哦,把addformat 改成大写字母……)
    • 只是在考虑 string.Format 以及是否需要它。无论如何,倾向于将其用作默认值。我认为 foreach 更具描述性,但您正确的 LINQ 更简洁
    • @TimSchmelter:但这不是这里发生的事情 - 它只是将它们全部连接起来。我认为这里的string.Format("{0}{1}{2}", prefix, s, suffix 比直接的prefix + s + suffix 可读性差。
    猜你喜欢
    • 2012-09-14
    • 2018-09-13
    • 2016-07-03
    • 2012-07-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-28
    相关资源
    最近更新 更多