Skip to content

Instantly share code, notes, and snippets.

@the-takeo
Created February 8, 2016 07:06
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save the-takeo/1fdfefeca318023f5da3 to your computer and use it in GitHub Desktop.
Save the-takeo/1fdfefeca318023f5da3 to your computer and use it in GitHub Desktop.
ClassExtension
using System;
using System.Collections.Generic;
using System.Text;
namespace ClassExtension
{
public static class StringBuilderExtension
{
public static StringBuilder AppendFormatLoop(this StringBuilder instance,
string format, IEnumerable<Object> objects)
{
foreach (Object obj in objects)
{
instance.AppendFormat(format, obj.ToString());
}
return instance;
}
public static StringBuilder ForEach(this StringBuilder @this,
IEnumerable<object> args, string format = null, string delimiter = null)
{
return forEach(@this, args, format, delimiter, false);
}
public static StringBuilder ForEachLine(this StringBuilder @this,
IEnumerable<object> args, string format = null, string delimiter = null)
{
return forEach(@this, args, format, delimiter, true);
}
private static StringBuilder forEach(StringBuilder @this,
IEnumerable<object> args, string format, string delimiter, bool newline)
{
int prev_length = @this.Length;
foreach (var arg in args)
{
if (string.IsNullOrEmpty(format)) { @this.Append(arg); }
else { @this.AppendFormat(format, arg); }
if (string.IsNullOrEmpty(delimiter) == false) { @this.Append(delimiter); }
if (newline) { @this.AppendLine(); }
}
if (string.IsNullOrEmpty(delimiter) == false && prev_length != @this.Length)
{ @this.Remove(@this.Length - delimiter.Length, delimiter.Length); }
return @this;
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment