如何在实现collecion ToString时避免最后一个逗号

本文关键字:最后一个 ToString 实现 collecion | 更新日期: 2023-09-27 18:00:17

我正在实现一个自定义的toJson()方法。

我班的一个成员是一本字典。

我做到了:

        sb.Append("'"DateSource'" : {");
        foreach (var row in DateSource)
        {
            sb.Append("[");
            sb.Append(string.Format("'"RowKey'" : {0}", row.Key));
            sb.Append(string.Format("'"RowData'" : {0}", row.Value));
            sb.Append("]");
        }
        sb.Append("}");

如何避免转换中的最后一个逗号?

如何在实现collecion ToString时避免最后一个逗号

您可以使用:

sb.Append("[");
sb.Append(string.Join(
    ", ",
    DateSource.Select(r => string.Format("'"RowKey'" : {0}, '"RowData'" : {1}", r.Key, r.Value))));
sb.Append("]");

我使用以下扩展:

    public static String ToSeparatedString<T>(this IEnumerable<T> source, String separator)
    {
        return String.Join(separator, source.Select(e => e.ToString()).ToArray());
    }

如果你需要格式化:

    public static String ToSeparatedString<T>(this IEnumerable<T> source, String separator, String format)
    {
        return String.Join(separator, source.Select(e => String.Format(format, e)).ToArray());
    }

使用示例

    var myList = new List<String> {"a", "b", "c"};
    String result = myList.ToSeparatedString(",", "[{0}]");
    // result is "[a],[b],[c]" here
    sb.Append("'"DateSource'" : {");
    string separator = string.Empty;
    foreach (var row in DateSource)
    {
        sb.Append(separator);
        sb.Append("[");
        sb.Append(string.Format("'"RowKey'" : {0},", row.Key));
        sb.Append(string.Format("'"RowData'" : {0}", row.Value));
        sb.Append("]");
        separator = ",";
    }
    sb.Append("}");

考虑到如果行。键和/或行。值表示字符串,您需要应用类似的格式

        sb.Append(string.Format("'"RowKey'" : '"{0}'"", row.Key));
        sb.Append(string.Format("'"RowData'" : '"{0}'"", row.Value));

注意此'"{0}'"

我想我只使用String.replacement()更换每个

, ] --> ] 
, } --> }