我有一个对象数组:
object[] keys
我需要将这个数组转换为逗号分隔的字符串,并通过这样做完成:
var newKeys = string.Join(",", keys);
我的问题是我希望这个值被双引号。
例如:
"value1","value2","value3"
答案 0 :(得分:3)
var new= "\"" + string.Join( "\",\"", keys) + "\"";
要在字符串中包含双引号,请使用反斜杠字符对其进行转义,因此“\”“是由单个双引号字符组成的字符串,而”\“,\”“是包含双字符的字符串引用,逗号,空格和另一个双引号。
答案 1 :(得分:2)
请尝试一下。
var keys = new object[] { "test1", "hello", "world", null, "", "oops"};
var csv = string.Join(",", keys.Select(k => string.Format("\"{0}\"", k)));
因为你有一个object[]
数组,string.Format
可以处理null以及除字符串之外的其他类型。此解决方案也适用于.NET 3.5。
当object []数组为空时,则返回一个空字符串。
答案 2 :(得分:1)
如果性能是关键,那么您始终可以使用StringBuilder
来连接所有内容。
Here's a fiddle看到它的实际效果,但主要部分可归纳为:
// these look like snails, but they are actually pretty fast
using @_____ = System.Collections.Generic.IEnumerable<object>;
using @______ = System.Func<object, object>;
using @_______ = System.Text.StringBuilder;
public static string GetCsv(object[] input)
{
// use a string builder to make things faster
var @__ = new StringBuilder();
// the rest should be self-explanatory
Func<@_____, @______, @_____>
@____ = (_6,
_2) => _6.Select(_2);
Func<@_____, object> @_3 = _6
=> _6.FirstOrDefault();
Func<@_____, @_____> @_4 = _8
=> _8.Skip(input.Length - 1);
Action<@_______, object> @_ = (_9,
_2) => _9.Append(_2);
Action<@_______>
@___ = _7 =>
{ if (_7.Length > 0) @_(
@__, ",");
}; var @snail =
@____(input, (@_0 =>
{ @___(@__); @_(@__, @"""");
@_(@__, @_0); @_(@__, @"""");
return @__; }));
var @linq = @_4(@snail);
var @void = @_3(@linq);
// get the result
return @__.ToString();
}