2015-04-05 231 views
1

我有下面的语句从字符串语句中删除最后一个逗号

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); 

但该语句似乎并没有删除最后一个逗号,而是它重新主线一样,我在这里做错了什么?

+0

'Substring'的第一个参数,如果索引。所以你在这里做的是删除第一个字符,而不是最后一个字符。将第一个参数更改为“0”而不是“1”。 – 2015-04-05 05:20:03

回答

3

使用TrimEnd(',')管理删除它;

var t = model.Activities.TrimEnd(','); 
5

而不是添加,然后删除逗号,它是更清洁,以避免它首先。这是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(),如果他们”请不要使用字符串)并加入它们,并且特别适用于在最后一项之后关闭分隔符的这种非常流行的情况。

注:这种技术确实收集两次走了过来,一次字符串化,一旦加入。如果这是一个巨大的收集,这可能是一个问题。通常情况下,它不会。

2

在这条线是不正确的:

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

子字符串使用从零开始的索引。它更改为这将解决该问题:

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

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

相关问题