Обработка строковых построек в правильном направлении

Я добавляю некоторые строки в объект строкового построителя, основываясь на следующих условиях:

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");

если первое и четвертое условие идут не так, моя финальная строка может стать ::

,Dressed,Disheveled,Other

и здесь я могу получить дополнительную запятую. Я должен найти эту запятую, если она существует в Sb_Appearance по первому индексу и должна удалить ее. Как я могу это сделать.

3 ответа

Я бы предложил использовать List и присоединиться к нему потом:

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);
</string>

Я знаю, что не то, что вы спросили (вы хотели StringBuilder).. но это то, что вы хотите.


Здесь один из способов:

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(',');


Любая причина, по которой вы сначала добавляете запятые, а затем значение? Я бы поменял запятые, если сможешь.

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 3.0 with attribution.