Monday, October 31, 2005 7:21 PM
ever needed to something like this:
for(int i=0;i<names.Length;i++)
{
displayNames+= names[i].ToString +“, “;
}
displayNames = displayNames.SubString(displayNames.Length-2, 2);
That stinks having to worry about that last concatentation. Builder pattern to the rescue. This class lets you concatenate strings with any character or string and never outputs the junk at the end.
here is a usage example:
ConcatBuilder commaConcat = ConcatBuilder.CreateCustomConcatBuilder(“, “);
commaConcat.Add(“slim“);
commaConcat.Add(“lightweight“);
commaConcat.Add(“attractive“);
return commaConcat.ToString(); //returns “slim, lightweight, attractive“
<code>
using
System;
using
System.Collections.Specialized;
using
System.Text;
namespace x
{
/// <summary>
/// A Builder for concatenating strings with separator strings.
/// Simplifies checking for length and null of each part before
/// applying the separator
/// </summary>
public class ConcatBuilder
{
string _separator = " - ";
StringCollection _parts =
new StringCollection();
private ConcatBuilder()
{
}
private ConcatBuilder(string separator)
{
_separator = separator;
}
public static ConcatBuilder CreateHyphenConcatBuilder()
{
return new ConcatBuilder();
}
public static ConcatBuilder CreateCustomConcatBuilder(string separator)
{
return new ConcatBuilder(separator);
}
public void Add(string part)
{
if(null != part && part.Trim() != string.Empty)
_parts.Add(part);
}
public void Clear()
{
_parts.Clear();
}
public override string ToString()
{
StringBuilder sb = new StringBuilder();
for(int i=0; i < _parts.Count; i++)
{
sb.Append(_parts[i]);
if(i < _parts.Count -1) sb.Append(_separator);
}
return sb.ToString();
}
}
}
</code>