我有以下字符串构建器作为msrtResult,这很长:
mstrResult.Append(rtbResult.Text).Append("})})" + Environment.NewLine)
如何从mstrResult中删除最后一个“,”? (它位于mstrResult的中间,它不是整个字符串的最后一个字符,因为我将字符串附加到它上面) 我应该在添加换行符之前执行此操作。 感谢
答案 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.