对象以逗号分隔并带双引号

时间:2014-07-22 13:27:05

标签: c#

我有一个对象数组:

 object[] keys

我需要将这个数组转换为逗号分隔的字符串,并通过这样做完成:

var newKeys = string.Join(",", keys);

我的问题是我希望这个值被双引号。

例如:

"value1","value2","value3"

3 个答案:

答案 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();
}