从我的stringbuilder中删除一个字符

Fau*_*Orc 34 .net c# vb.net

我有以下字符串构建器作为msrtResult,这很长:

mstrResult.Append(rtbResult.Text).Append("})})" + Environment.NewLine)
Run Code Online (Sandbox Code Playgroud)

如何从mstrResult中删除最后一个","?(它位于mstrResult的中间,并且它不是整个字符串的最后一个字符,因为我要向其追加字符串)我应该在添加换行符之前执行此操作.谢谢

Kri*_*all 65

你可以减少长度来缩短字符串(C#):

mstrResult.Length -= 1;
Run Code Online (Sandbox Code Playgroud)

编辑:

你更新了问题后,我想我知道你想要的:)这个怎么样:

mstrResult.Append(rtbResult.Text).Append("})})" + Environment.NewLine);
var index = mstrResult.ToString().LastIndexOf(',');
if (index >= 0)
    mstrResult.Remove(index, 1);
Run Code Online (Sandbox Code Playgroud)


nzn*_*oor 13

添加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;
}
Run Code Online (Sandbox Code Playgroud)

然后调用:

yourStringBuilder.RemoveLast(",");
Run Code Online (Sandbox Code Playgroud)


Dav*_*nan 4

StringBuilder.Remove()如果您知道要删除的字符的位置,则可以使用。

我想一开始就不添加它会更容易。


您更新的问题涉及删除最后一个逗号字符。我猜您想这样做是为了避免创建如下所示的消息:

我的购物清单包括牛奶、鸡蛋、黄油和鱼。

您可以将其组装在一个循环中,迭代一个数组。通常,您可以编写循环,以便在循环的最后一次迭代时选择(例如使用 if 语句)不添加命令。

  • 如果您在开头而不是末尾添加 , ,您就会知道这是第一个需要删除的...然后您可以使用 Remove 吗? (2认同)