Thomas Gathings II
hey buddy, the truth hurts.

A Builder pattern for repeated string concatenation with separators

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>

 

 

 

 


Feedback

# re: A Builder pattern for repeated string concatenation with separators

Hi,
try this:
string[] val = {"Adam","Berta","Cleo","Daisy"};
string sep = ",";
string rslt = String.Join(sep,val);
Hannes 11/1/2005 1:46 AM | Hannes Pavelka

# re: A Builder pattern for repeated string concatenation with separators

This is my favorite:

for(int i=0;i<names.Length;i++)

{

displayNames+= names[i].ToString +“, “;

}

displayNames = displayNames.TrimEnd(' ', ',');
11/1/2005 4:40 AM | Matt Watson

# re: A Builder pattern for repeated string concatenation with separators

Haacked has a nice generic method for doing just this: http://haacked.com/archive/2006/11/24/concatenating_delimited_strings_with_generic_delegates.aspx

Better late than never! 7/1/2007 2:17 AM | jayson knight

Post a comment