Подтвердить что ты не робот

Удаление символа из моего строкового редактора

У меня есть следующий строковый построитель как msrtResult, который довольно длинный:

mstrResult.Append(rtbResult.Text).Append("})})" + Environment.NewLine)

Как удалить последний "," из mstrResult Now? (он находится в середине этого mstrResult и не является последним символом всей строки, так как я добавляю к ней строки) Я должен сделать это перед добавлением новой строки. Благодаря

4b9b3361

Ответ 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.