一个简单的问题。
我有一个清单 集合= David,Bob,Ted
foreach (var value in collection)
{
sb.Append(value);
sb.Append(",");
}
sb.ToString().TrimEnd(',');
输出:David,Bob,Ted,
但是,当我尝试修剪“,”作为最后一个值
sb.ToString().TrimEnd(',');
当我运行它时它仍然出现。我做错什么了吗?
答案 0 :(得分:3)
正如我在评论中提到的那样,您需要将修剪后的字符串写回到变量中:
var output = sb.ToString().TrimEnd(',');
但是,StringBuilder似乎不是用,
分隔收集项的正确工具。
string.Join
似乎更适合该任务:
var output = string.Join(",", collection);
答案 1 :(得分:1)
字符串是不可变的,您始终在创建具有更改的副本,并且没有使用新副本,则看不到更改。要解决此问题,请使用字符串副本:
var result = sb.ToString().TrimEnd(',');
或在调用ToString()
之前修改字符串生成器本身:
sb.Length--;
var result = sb.ToString();
答案 2 :(得分:1)
您需要打印修剪后的结果,请尝试此操作;
foreach (var value in collection)
{
sb.Append(value);
sb.Append(",");
}
var result = sb.ToString().TrimEnd(',');
Console.WriteLine(result);
答案 3 :(得分:0)
另一种可能性是删除最后N个字符,在这种情况下为1:
var result = sb.ToString().Substring(0, sb.ToString().Length - 1);