从string语句中删除最后一个逗号

时间:2015-04-05 04:13:28

标签: c# asp.net-mvc-5 substring

我有以下声明

model.Activities = model.SelectedActivities.Aggregate(model.Activities, (current, activityId) => current + string.Format("({0}, {1}, {2}, null),", activityId, userId, DateTime.Now));

产生以下内容:

(1, 1, 05/04/2015 05:09:39, null),(2, 1, 05/04/2015 05:09:39, null),(3, 1, 05/04/2015 05:09:39, null),(5, 1, 05/04/2015 05:09:39, null),(8, 1, 05/04/2015 05:09:39, null),

正如你在最后看到的那样,有一个逗号,我试图通过执行以下操作来删除它:

var t = model.Activities.Substring(1, model.Activities.Length - 1);

但是该声明似乎没有删除最后一个逗号而是保持不变,我在这里做错了什么?

4 个答案:

答案 0 :(得分:6)

不是添加,然后删除逗号,而是首先要避免使用它。这就是string.Join的用途。

首先创建要加入的字符串集合:

IEnumerable<string> activities = model.SelectedActivities.Select(activityId => 
   string.Format("({0}, {1}, {2}, null),", activityId, userId, DateTime.Now));

然后加入他们:

var modelActivities = string.Join(",", activities);

字符串连接可以接收任何IEnumerable(如果它们不是字符串,则调用ToString()并加入它们),并且特别适用于在最后一项之后关闭分隔符的这种非常流行的情况。

注意:此技术 遍历集合两次,一次进行字符串化,一次进行加入。如果这是一个巨大的集合,它可能是一个问题。但通常,它不会成为。

答案 1 :(得分:4)

使用TrimEnd(',');

管理删除它
var t = model.Activities.TrimEnd(',');

答案 2 :(得分:2)

这条线不正确:

var t = model.Activities.Substring(1, model.Activities.Length - 1);

Substring使用基于零的索引。将其更改为此将解决问题:

var t = model.Activities.Substring(0, model.Activities.Length - 1);

答案 3 :(得分:0)

var t = model.Activities.Remove(model.Activities.Length - 1);

试试这个。容易,应该工作。