Удаление символа из моего строкового редактора
У меня есть следующий строковый построитель как msrtResult, который довольно длинный:
mstrResult.Append(rtbResult.Text).Append("})})" + Environment.NewLine)
Как удалить последний "," из mstrResult Now? (он находится в середине этого mstrResult и не является последним символом всей строки, так как я добавляю к ней строки)
Я должен сделать это перед добавлением новой строки.
Благодаря
Ответы
Ответ 1
Вы можете просто уменьшить длину, чтобы сократить строку (С#):
mstrResult.Length -= 1;
EDIT:
После того, как вы обновили свой вопрос, я думаю, что знаю, чего вы хотите:) Как насчет этого:
mstrResult.Append(rtbResult.Text).Append("})})" + Environment.NewLine);
var index = mstrResult.ToString().LastIndexOf(',');
if (index >= 0)
mstrResult.Remove(index, 1);
Ответ 2
Добавьте расширение StringBuilder.
public static StringBuilder RemoveLast(this StringBuilder sb, string value)
{
if(sb.Length < 1) return sb;
sb.Remove(sb.ToString().LastIndexOf(value), value.Length);
return sb;
}
затем вызовите:
yourStringBuilder.RemoveLast(",");
Ответ 3
Вы можете использовать StringBuilder.Remove()
, если вам известна позиция символов, которые вы хотите удалить.
Я бы предположил, что было бы проще не добавлять его в первую очередь.
Ваш обновленный вопрос говорит об удалении последнего символа запятой. Я предполагаю, что вы хотите сделать это, чтобы избежать создания сообщения, которое выглядит так:
В моем списке покупок содержится молоко, яйца, масло и рыба.
Вы собрали бы это в цикле, итерации по массиву. Обычно вы можете написать цикл, чтобы вы просто выбирали (например, с помощью оператора if), чтобы не добавлять команду, когда находитесь в последней итерации цикла.
Ответ 4
Try
mstrResult.Remove( mstrResult.Length - 1 - Environment.NewLine.Length
, Environment.NewLine.Length);
Ответ 5
Чтобы просто удалить последний добавленный вами символ, используйте ниже: (Это VB, но C должен работать аналогично)
Dim c As New StringBuilder
c.Remove(c.Length - 1, 1)
Ответ 6
Использование:
stringbuilder blahh = new stringbuilder()
int searchKey = blahh.LastIndexOf(',');
затем вызовите
blahh.Remove( searchKey, 1).Insert(searchKey, " and"); or a blank.