当前位置:  开发笔记 > 编程语言 > 正文

在C#中:在以逗号分隔的字符串列表中的字符串周围添加引号

如何解决《在C#中:在以逗号分隔的字符串列表中的字符串周围添加引号》经验,为你挑选了4个好方法。



1> FOR..:
string s = "A,B,C";
string replaced = "'"+s.Replace(",", "','")+"'";

感谢您的评论,我错过了外部报价.

当然..如果源是一个空字符串,你想要它周围的额外引号吗?如果输入是一堆空格怎么办?我的意思是,为了给出一个100%完整的解决方案,我可能会要求一个单元测试列表,但我希望我的直觉回答你的核心问题.

更新:还提出了一个基于LINQ的替代方案(使用String.Format的额外好处,因此不必担心前导/尾随引号):

string list = "Fred,Sam,Mike,Sarah";
string newList = string.Join(",", list.Split(',').Select(x => string.Format("'{0}'", x)).ToList());



2> Jon Skeet..:
string[] bits = list.Split(','); // Param arrays are your friend
for (int i=0; i < bits.Length; i++)
{
    bits[i] = "'" + bits[i] + "'";
}
return string.Join(",", bits);

或者您可以使用LINQ,特别是支持IEnumerable... 的String.Join版本

return list.Split(',').Select(x => "'" + x + "'").JoinStrings(",");

在其他地方有一个关于JoinStrings的实现...我会看看它.

编辑:嗯,我想的不是JoinStrings,所以这里是:

public static string JoinStrings(this IEnumerable source, 
                                    string separator)
{
    StringBuilder builder = new StringBuilder();
    bool first = true;
    foreach (T element in source)
    {
        if (first)
        {
            first = false;
        }
        else
        {
            builder.Append(separator);
        }
        builder.Append(element);
    }
    return builder.ToString();
}

这些天string.Join虽然有一个通用的重载,所以你可以使用:

return string.Join(",", list.Split(',').Select(x => $"'{x}'"));



3> vcuankit..:

按照Jon Skeet上面的例子,这对我有用.我已经有一个List名为__messages 的变量,所以这就是我所做的:

string sep = String.Join(", ", __messages.Select(x => "'" + x + "'"));



4> Tor Haugen..:
string[] splitList = list.Split(',');
string newList = "'" + string.Join("','", splitList) + "'";

推荐阅读
个性2402852463
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有