这可能有一个简单的答案,但我一定没有足够的咖啡来自己解决:
如果我有逗号分隔的字符串,例如:
string list = "Fred,Sam,Mike,Sarah";
Run Code Online (Sandbox Code Playgroud)
如何获取每个元素并在其周围添加引号并将其粘贴回如下字符串:
string newList = "'Fred','Sam','Mike','Sarah'";
Run Code Online (Sandbox Code Playgroud)
我假设迭代每一个都是一个开始,但我在那之后感到难过.
一个难看的解决方案:
int number = 0;
string newList = "";
foreach (string item in list.Split(new char[] {','}))
{
if (number > 0)
{
newList = newList + "," + "'" + item + "'";
}
else
{
newList = "'" + item + "'";
}
number++;
}
Run Code Online (Sandbox Code Playgroud)
FOR*_*FOR 79
string s = "A,B,C";
string replaced = "'"+s.Replace(",", "','")+"'";
Run Code Online (Sandbox Code Playgroud)
感谢您的评论,我错过了外部报价.
当然..如果源是一个空字符串,你想要它周围的额外引号吗?如果输入是一堆空格怎么办?我的意思是,为了给出一个100%完整的解决方案,我可能会要求一个单元测试列表,但我希望我的直觉回答你的核心问题.
更新:还提出了一个基于LINQ的替代方案(使用String.Format的额外好处,因此不必担心前导/尾随引号):
string list = "Fred,Sam,Mike,Sarah";
string newList = string.Join(",", list.Split(',').Select(x => string.Format("'{0}'", x)).ToList());
Run Code Online (Sandbox Code Playgroud)
Jon*_*eet 24
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);
Run Code Online (Sandbox Code Playgroud)
或者您可以使用LINQ,特别是支持IEnumerable<string>
... 的String.Join版本
return list.Split(',').Select(x => "'" + x + "'").JoinStrings(",");
Run Code Online (Sandbox Code Playgroud)
在其他地方有一个关于JoinStrings的实现...我会看看它.
编辑:嗯,我想的不是JoinStrings,所以这里是:
public static string JoinStrings<T>(this IEnumerable<T> 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();
}
Run Code Online (Sandbox Code Playgroud)
这些天string.Join
虽然有一个通用的重载,所以你可以使用:
return string.Join(",", list.Split(',').Select(x => $"'{x}'"));
Run Code Online (Sandbox Code Playgroud)
vcu*_*kit 20
按照Jon Skeet上面的例子,这对我有用.我已经有一个List<String>
名为__messages 的变量,所以这就是我所做的:
string sep = String.Join(", ", __messages.Select(x => "'" + x + "'"));
Run Code Online (Sandbox Code Playgroud)
Tor*_*gen 16
string[] splitList = list.Split(',');
string newList = "'" + string.Join("','", splitList) + "'";
Run Code Online (Sandbox Code Playgroud)
基于 Jon Skeet 的示例,但针对 .NET 4+ 进行了现代化改造:
// [ "foo", "bar" ] => "\"foo\"", "\"bar\""
string.Join(", ", strList.Select(x => $"\"{x}\""));
Run Code Online (Sandbox Code Playgroud)