删除列表中字符串的一部分<;字符串>;
本文关键字:字符串 gt 一部分 lt 删除列 列表 删除 | 更新日期: 2023-09-27 18:29:18
我有一个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个字符
您可以使用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();
将字符串分成两部分,然后取第一个字符串并在列表中使用它。Split方法会将拆分后的字符串返回到一个数组中,这样您就可以在数组的第一个位置找到正确的部分。
var stringYouWant = msg.timestamp().as_creator_time(header.tz_offset()).ToString().Split(',')[0];
您可以用字符串值的子字符串或转换为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));
你可以这样做
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.
一个简单的SubString就可以了。
msg.timestamp().as_creator_time(header.tz_offset()).ToString().SubString(11, 8)
但是,看起来您正在使用时间戳。如果你能掌握DateTime,那么做一些类似的事情会更可读
myDateTime.ToString("HH:mm:ss")