C# 删除列表中的部分字符串<;字符串>;

C# 删除列表中的部分字符串<;字符串>;,c#,string,list,C#,String,List,我有一个列表,其中包含一个项目,如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,

我有一个
列表
,其中包含一个项目,如
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个字符

您可以使用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();
List lst=新列表{“2014-11-03 23:58:37.6750486_0003”};
List calltimeList=lst.Select(s=>newstring(s.SkipWhile(c=>c!='').Skip(1.TakeWhile(c=>c!=')).ToArray()).ToList();

将字符串分成两部分,然后取第一个字符串并在列表中使用。 Split方法将把分割的字符串返回到一个数组中,因此您将在数组的第一个位置拥有正确的部分

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

一个简单的子字符串就可以了

msg.timestamp().as_creator_time(header.tz_offset()).ToString().SubString(11, 8)
但是,看起来您使用的是时间戳。如果您能够掌握DateTime,那么执行以下操作更具可读性

myDateTime.ToString("HH:mm:ss")
var newList= callTimeList.Select(c=>c.Substring(11,8)).ToList();

你可以这么说

myDateTime.ToString("HH:mm:ss")
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进行分析。

您可以将字符串值作为子字符串或转换为DateTime,然后使用和格式化程序获得所需的值

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


你的问题与列表无关,而是关于字符串操作。