using System.Collections.Generic;
using System.Text;
namespace Typhoon.Excel2Json.Export
{
public interface IToDetailString
{
string ToDetailString(int padLeft = 0);
}
///
/// 拓展ToDetailString
///
public static class ToDetailStringExtension
{
private static Stack _stack = new Stack();
public static StringBuilder GetStringBuilder()
{
if (_stack.Count > 0)
{
var result = _stack.Pop();
result.Clear();
return result;
}
return new StringBuilder();
}
//回收
private static void RecycleStringBuilder(StringBuilder sb)
{
_stack.Push(sb);
}
public static string ToDetailString(this int value, int pad = 0)
{
var sb = GetStringBuilder();
sb.Clear();
sb.Append(' ', pad);
sb.Append(value.ToString());
var result = sb.ToString();
RecycleStringBuilder(sb);
return result;
}
public static string ToDetailString(this long value, int pad = 0)
{
var sb = GetStringBuilder();
sb.Append(' ', pad);
sb.Append(value.ToString());
var result = sb.ToString();
RecycleStringBuilder(sb);
return result;
}
public static string ToDetailString(this float value, int pad = 0)
{
var sb = GetStringBuilder();
sb.Append(' ', pad);
sb.Append(value.ToString());
var result = sb.ToString();
RecycleStringBuilder(sb);
return result;
}
public static string ToDetailString(this double value, int pad = 0)
{
var sb = GetStringBuilder();
sb.Append(' ', pad);
sb.Append(value.ToString());
var result = sb.ToString();
RecycleStringBuilder(sb);
return result;
}
public static string ToDetailString(this bool value, int pad = 0)
{
var sb = GetStringBuilder();
sb.Append(' ', pad);
sb.Append(value.ToString());
var result = sb.ToString();
RecycleStringBuilder(sb);
return result;
}
public static string ToDetailString(this string value, int pad = 0)
{
var sb = GetStringBuilder();
sb.Append(' ', pad);
sb.Append(value);
var result = sb.ToString();
RecycleStringBuilder(sb);
return result;
}
public static string ToDetailString(this int[] value, int pad = 0)
{
var sb = GetStringBuilder();
sb.Append(' ', pad);
if (value == null)
{
sb.Append("null");
}
else
{
sb.Clear();
for (int i = 0; i < value.Length; i++)
{
sb.Append($"{value[i]}");
if (i != value.Length - 1)
{
sb.Append(",");
}
}
}
var result = sb.ToString();
RecycleStringBuilder(sb);
return result;
}
public static string ToDetailString(this long[] value, int pad = 0)
{
var sb = GetStringBuilder();
sb.Append(' ', pad);
if (value == null)
{
sb.Append("null");
}
else
{
sb.Clear();
for (int i = 0; i < value.Length; i++)
{
sb.Append($"{value[i]}");
if (i != value.Length - 1)
{
sb.Append(",");
}
}
}
var result = sb.ToString();
RecycleStringBuilder(sb);
return result;
}
public static string ToDetailString(this float[] value, int pad = 0)
{
var sb = GetStringBuilder();
sb.Append(' ', pad);
if (value == null)
{
sb.Append("null");
}
else
{
sb.Clear();
for (int i = 0; i < value.Length; i++)
{
sb.Append($"{value[i]}");
if (i != value.Length - 1)
{
sb.Append(",");
}
}
}
var result = sb.ToString();
RecycleStringBuilder(sb);
return result;
}
public static string ToDetailString(this double[] value, int pad = 0)
{
var sb = GetStringBuilder();
sb.Append(' ', pad);
if (value == null)
{
sb.Append("null");
}
else
{
sb.Clear();
for (int i = 0; i < value.Length; i++)
{
sb.Append($"{value[i]}");
if (i != value.Length - 1)
{
sb.Append(",");
}
}
}
var result = sb.ToString();
RecycleStringBuilder(sb);
return result;
}
public static string ToDetailString(this bool[] value, int pad = 0)
{
var sb = GetStringBuilder();
sb.Append(' ', pad);
if (value == null)
{
sb.Append("null");
}
else
{
sb.Clear();
for (int i = 0; i < value.Length; i++)
{
sb.Append($"{value[i]}");
if (i != value.Length - 1)
{
sb.Append(",");
}
}
}
var result = sb.ToString();
RecycleStringBuilder(sb);
return result;
}
public static string ToDetailString(this string[] value, int pad = 0)
{
var sb = GetStringBuilder();
sb.Append(' ', pad);
if (value == null)
{
sb.Append("null");
}
else
{
sb.Clear();
for (int i = 0; i < value.Length; i++)
{
sb.Append($"{value[i]}");
if (i != value.Length - 1)
{
sb.Append(",");
}
}
}
var result = sb.ToString();
RecycleStringBuilder(sb);
return result;
}
public static string ToFinalDetailString(this string[] value, int pad = 0)
{
var sb = GetStringBuilder();
sb.Append(' ', pad);
if (value == null)
{
sb.Append("null");
}
else
{
sb.Clear();
for (int i = 0; i < value.Length; i++)
{
sb.AppendLine($"{value[i]}".ToDetailString(pad));
}
}
var result = sb.ToString();
RecycleStringBuilder(sb);
return result;
}
public static string ToDetailString(this int[][] value, int pad = 0)
{
var sb = GetStringBuilder();
sb.Append(' ', pad);
if (value == null)
{
sb.Append("null");
}
else
{
sb.Clear();
for (int i = 0; i < value.GetLength(0); i++)
{
var element = value[i];
sb.AppendLine(element.ToDetailString(pad));
}
}
var result = sb.ToString();
RecycleStringBuilder(sb);
return result;
}
public static string ToDetailString(this long[][] value, int pad = 0)
{
var sb = GetStringBuilder();
sb.Append(' ', pad);
if (value == null)
{
sb.Append("null");
}
else
{
sb.Clear();
for (int i = 0; i < value.GetLength(0); i++)
{
var element = value[i];
sb.AppendLine(element.ToDetailString(pad));
}
}
var result = sb.ToString();
RecycleStringBuilder(sb);
return result;
}
public static string ToDetailString(this float[][] value, int pad = 0)
{
var sb = GetStringBuilder();
sb.Append(' ', pad);
if (value == null)
{
sb.Append("null");
}
else
{
sb.Clear();
for (int i = 0; i < value.GetLength(0); i++)
{
var element = value[i];
sb.AppendLine(element.ToDetailString(pad));
}
}
var result = sb.ToString();
RecycleStringBuilder(sb);
return result;
}
public static string ToDetailString(this double[][] value, int pad = 0)
{
var sb = GetStringBuilder();
sb.Append(' ', pad);
if (value == null)
{
sb.Append("null");
}
else
{
sb.Clear();
for (int i = 0; i < value.GetLength(0); i++)
{
var element = value[i];
sb.AppendLine(element.ToDetailString(pad));
}
}
var result = sb.ToString();
RecycleStringBuilder(sb);
return result;
}
public static string ToDetailString(this bool[][] value, int pad = 0)
{
var sb = GetStringBuilder();
sb.Append(' ', pad);
if (value == null)
{
sb.Append("null");
}
else
{
sb.Clear();
for (int i = 0; i < value.GetLength(0); i++)
{
var element = value[i];
sb.AppendLine(element.ToDetailString(pad));
}
}
var result = sb.ToString();
RecycleStringBuilder(sb);
return result;
}
public static string ToDetailString(this string[][] value, int pad = 0)
{
var sb = GetStringBuilder();
sb.Append(' ', pad);
if (value == null)
{
sb.Append("null");
}
else
{
sb.Clear();
for (int i = 0; i < value.GetLength(0); i++)
{
var element = value[i];
sb.AppendLine(element.ToDetailString(pad));
}
}
var result = sb.ToString();
RecycleStringBuilder(sb);
return result;
}
public static string GetDetailString(this IToDetailString value, int pad = 0)
{
return value.ToDetailString(pad);
}
public static string GetDetailString(this IToDetailString[] value, int pad = 0)
{
var sb = GetStringBuilder();
sb.Append(' ', pad);
if (value == null)
{
sb.Append("null");
}
else
{
sb.Clear();
for (int i = 0; i < value.Length; i++)
{
var element = value[i];
sb.AppendLine(element.GetDetailString(pad));
if (i != value.Length - 1)
{
sb.AppendLine();
}
}
}
var result = sb.ToString();
RecycleStringBuilder(sb);
return result;
}
}
}