Question

I am appending some strings to my string builder object based on some conditions as follows:

StringBuilder Sb_Appearance = new StringBuilder();

if (Details.IsNeat == true) 
    Sb_Appearance.Append("Neat");

if (Details.IsDressed == true) 
    Sb_Appearance.Append(",Dressed");

if (Details.IsDisheveled == true) 
    Sb_Appearance.Append(",Disheveled");

if (Details.IsInappropriatelyDressed == true) 
    Sb_Appearance.Append(",Inappropriately Dressed");

if (Details.IsAppearanceOther == true) 
    Sb_Appearance.Append(",Other");

if first and fourth condition goes wrong, my final string can becomes::

,Dressed,Disheveled,Other

and here I can get a extra comma. I have to find that comma if it exists in Sb_Appearance at first index and have to remove that.How can I do that.

Was it helpful?

Solution

I would suggest using a List<string> and joining it afterwards:

var list = new List<string>();

if (Details.IsNeat)
    list.Add("Neat");

if (Details.IsDressed)
    list.Add("Dressed");

if (Details.IsDisheveled)
    list.Add("Disheveled");

if (Details.IsInappropriatelyDressed)
    list.Add("Inappropriately Dressed");

if (Details.IsAppearanceOther)
    list.Add("Other");

var result = string.Join(", ", list);

I know that's not what you asked (you wanted the StringBuilder).. but this is what you want.

OTHER TIPS

Here's one way:

StringBuilder Sb_Appearance = new StringBuilder();
if (Details.IsNeat) Sb_Appearance.Append(",Neat");
if (Details.IsDressed) Sb_Appearance.Append(",Dressed");
if (Details.IsDisheveled) Sb_Appearance.Append(",Disheveled");
if (Details.IsInappropriatelyDressed) Sb_Appearance.Append(",Inappropriately Dressed");
if (Details.IsAppearanceOther) Sb_Appearance.Append(",Other");

var NewString = Sb_Appearance.ToString().TrimStart(',');

Any reason why you add the commas first then the value? I would swap the commas around if you can.

StringBuilder Sb_Appearance = new StringBuilder();

if (Details.IsNeat == true) 
    Sb_Appearance.Append("Neat,");

if (Details.IsDressed == true) 
    Sb_Appearance.Append("Dressed,");

if (Details.IsDisheveled == true) 
    Sb_Appearance.Append("Disheveled,");

if (Details.IsInappropriatelyDressed == true) 
    Sb_Appearance.Append("Inappropriately Dressed,");

if (Details.IsAppearanceOther == true) 
    Sb_Appearance.Append("Other");

if(Sb_Appearance[Sb_Appearance.Length - 1] == ',')
    Sb_Appearance.Remove(Sb_Appearance.Length - 1, 1);
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top