我有一个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个字符
答案 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解析。