删除List <string> </string>中的部分String

时间:2014-11-04 19:43:04

标签: c# string list

我有一个List<string>,其中包含2014-11-03 23:58:37.6750486_0003项,我想知道如何从列表中删除以下项:2014-11-03.6750486_0003 ,只留下23:58:37

使用以下内容将项目添加到列表中:

calltimeList.Add(msg.timestamp().as_creator_time(header.tz_offset()).ToString());

使用此

Console.WriteLine(entryTime.Substring(11, 8));

工作正常,因为它总是从@ 11开始,只有8个字符

5 个答案:

答案 0 :(得分:2)

您可以使用LINQ:

List<string> lst = new List<string> { "2014-11-03 23:58:37.6750486_0003" };
List<string> calltimeList = lst.Select(s => new string(s.SkipWhile(c => c != ' ').Skip(1).TakeWhile(c => c != '.').ToArray())).ToList();

答案 1 :(得分:1)

将字符串拆分为两部分,然后取出第一个字符串并在列表中使用它。 Split方法会将拆分字符串返回到数组中,因此您将在数组的第一个位置具有正确的部分。

var stringYouWant = msg.timestamp().as_creator_time(header.tz_offset()).ToString().Split(',')[0];

答案 2 :(得分:1)

您可以对字符串值进行子字符串索引或转换为DateTime,然后使用和格式化来获取所需的值。

    string timestamp = "2014-11-03 23:58:37.6750486_0003";
         int index=timestamp.IndexOf(":");
        timestamp.Substring(index - 2, 8);

            string timestamp = "2014-11-03 23:58:37.6750486_0003";
        int index = timestamp.IndexOf("_");
        var time = DateTime.Parse(timestamp.Substring(0, index));

答案 3 :(得分:0)

一个简单的SubString可以。

msg.timestamp().as_creator_time(header.tz_offset()).ToString().SubString(11, 8)

但是,看起来您正在使用时间戳。如果你能掌握DateTime,那么做

之类的东西会更具可读性
myDateTime.ToString("HH:mm:ss")

答案 4 :(得分:0)

你可能会像

那样
var newList= callTimeList.Select(c=>c.Substring(11,8)).ToList();

但我认为更好的解决方案是将callTimeList存储为日期列表,然后根据需要对其进行字符串化。我的初始是将字符串转换为日期然后格式化

var newList = callTimeList.Select(c=> String.Format("{0:HH:mm:ss}",c)).ToList();

但我不熟悉_0003的东西,但它不能被DateTime.Parse解析。