【问题标题】:remove last comma from string statement从字符串语句中删除最后一个逗号
【发布时间】:2015-04-05 04:13:28
【问题描述】:

我有以下说法

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

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

【问题讨论】:

  • Substring的第一个参数如果是索引。所以你在这里做的是删除第一个字符,而不是最后一个。将第一个参数改为0,而不是1

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


【解决方案1】:

与其先添加逗号,然后再删除逗号,不如一开始就避免逗号。这就是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】:

    设法使用 TrimEnd(','); 删除它

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

    【讨论】:

      【解决方案3】:

      是这行不正确:

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

      子字符串使用从零开始的索引。改成这样就可以解决问题了:

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

      【讨论】:

        【解决方案4】:
        var t = model.Activities.Remove(model.Activities.Length - 1);
        

        试试这个。简单,应该可以工作。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2021-03-18
          • 2013-10-07
          • 1970-01-01
          • 2021-11-11
          • 1970-01-01
          • 2015-10-05
          • 2017-03-24
          • 1970-01-01
          相关资源
          最近更新 更多