从我的stringbuilder中删除一个字符

时间:2011-04-18 09:54:17

标签: c# .net vb.net

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

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

如何从mstrResult中删除最后一个“,”? (它位于mstrResult的中间,它不是整个字符串的最后一个字符,因为我将字符串附加到它上面) 我应该在添加换行符之前执行此操作。 感谢

6 个答案:

答案 0 :(得分:65)

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

mstrResult.Length -= 1;

编辑:

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

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

答案 1 :(得分: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;
}

然后调用:

yourStringBuilder.RemoveLast(",");

答案 2 :(得分:3)

如果您知道要删除的角色的位置,可以使用StringBuilder.Remove()

我想,首先添加它会更容易。


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

  

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

你要在一个循环中组装它,迭代一个数组。通常你可以编写循环,这样你只需选择(例如使用if语句)就不会在循环的最后一次迭代中添加命令。

答案 3 :(得分:1)

尝试

mstrResult.Remove( mstrResult.Length - 1 - Environment.NewLine.Length
                 , Environment.NewLine.Length);

答案 4 :(得分:1)

要删除下面使用的最后一个字符:(这是VB,但C应该类似)

Dim c As New StringBuilder
c.Remove(c.Length - 1, 1)

答案 5 :(得分:-2)

使用:

stringbuilder blahh = new stringbuilder()
int searchKey = blahh.LastIndexOf(',');

然后致电

blahh.Remove( searchKey, 1).Insert(searchKey, " and"); or a blank.