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());
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}'"));
按照Jon Skeet上面的例子,这对我有用.我已经有一个List
名为__messages 的变量,所以这就是我所做的:
string sep = String.Join(", ", __messages.Select(x => "'" + x + "'"));
string[] splitList = list.Split(','); string newList = "'" + string.Join("','", splitList) + "'";