Stringbuilder TrimEnd() 为什么不删除我的字符?
Stringbuilder TrimEnd() why is it not removing my char?
只是一个简单的问题。
我有一个清单
集合 = 大卫、鲍勃、泰德
foreach (var value in collection)
{
sb.Append(value);
sb.Append(",");
}
sb.ToString().TrimEnd(',');
输出:David, Bob, Ted,
然而,当我尝试 trim 关闭 "," 作为最后一个值时
sb.ToString().TrimEnd(',');
当我 运行 它仍然出现。我做错了什么吗?
字符串是不可变的,你总是在创建一个有变化的副本,而你没有使用你的新副本母鸡你看不到变化。要修复它,请使用您的字符串副本:
var result = sb.ToString().TrimEnd(',');
或在调用 ToString()
:
之前修改字符串生成器本身
sb.Length--;
var result = sb.ToString();
您需要打印修剪后的结果,试试这个;
foreach (var value in collection)
{
sb.Append(value);
sb.Append(",");
}
var result = sb.ToString().TrimEnd(',');
Console.WriteLine(result);
正如我在评论中提到的,您需要将修剪后的字符串写回到变量中:
var output = sb.ToString().TrimEnd(',');
但 StringBuilder 似乎不是用 ,
分隔集合项的正确工具。
string.Join
似乎更适合这项任务:
var output = string.Join(",", collection);
另一种可能性是删除最后 N 个字符,在本例中为 1 :
var result = sb.ToString().Substring(0, sb.ToString().Length - 1);
只是一个简单的问题。
我有一个清单 集合 = 大卫、鲍勃、泰德
foreach (var value in collection)
{
sb.Append(value);
sb.Append(",");
}
sb.ToString().TrimEnd(',');
输出:David, Bob, Ted,
然而,当我尝试 trim 关闭 "," 作为最后一个值时
sb.ToString().TrimEnd(',');
当我 运行 它仍然出现。我做错了什么吗?
字符串是不可变的,你总是在创建一个有变化的副本,而你没有使用你的新副本母鸡你看不到变化。要修复它,请使用您的字符串副本:
var result = sb.ToString().TrimEnd(',');
或在调用 ToString()
:
sb.Length--;
var result = sb.ToString();
您需要打印修剪后的结果,试试这个;
foreach (var value in collection)
{
sb.Append(value);
sb.Append(",");
}
var result = sb.ToString().TrimEnd(',');
Console.WriteLine(result);
正如我在评论中提到的,您需要将修剪后的字符串写回到变量中:
var output = sb.ToString().TrimEnd(',');
但 StringBuilder 似乎不是用 ,
分隔集合项的正确工具。
string.Join
似乎更适合这项任务:
var output = string.Join(",", collection);
另一种可能性是删除最后 N 个字符,在本例中为 1 :
var result = sb.ToString().Substring(0, sb.ToString().Length - 1);