如何在字符串属性中每次出现时间戳之前附加换行符
本文关键字:时间戳 换行符 字符串 属性 | 更新日期: 2023-09-27 18:13:19
我有一个包含字符串属性的列表,称为Actions
。在每个Actions
字符串属性中,有多个由时间戳分隔的文本条目,如下所示:
05/10/2016 15:23:42- UTC--test
05/10/2016 16:07:04- UTC--test
05/10/2016 16:33:54- UTC--test
06/10/2016 08:24:52- UTC--test
我想做的是在字符串属性中的每个时间戳之前插入一个换行'n
字符。
//Not sure how to find the instance of timestamp in the string
foreach (var record in escList)
{
record.Actions = record.Actions.Replace("timestamp_text_string","'n" + "timestamp_text_value");
}
我正在考虑使用正则表达式来匹配每个匹配时间戳模式的字符串,但不确定正则表达式是否在这种情况下工作:
string pattern = @"'[[0-9]:[0-9]{1,2}:[0-9]{1,2}']"; //timestamp pattern
record.Actions = record.Actions.Replace(pattern,"'n" + pattern);
如何在字符串属性中每次出现时间戳之前附加换行符?
期望的结果是,对于字符串属性中的每个条目,即05/10/2016 15:23:42- UTC--test
,将在字符串的该部分之前添加一个新行。输出如下:
05/10/2016 15:23:42- UTC--test
05/10/2016 16:07:04- UTC--test
05/10/2016 16:33:54- UTC--test
06/10/2016 08:24:52- UTC--test
使用Split
:
List<string> result=new List<string>();
foreach (var record in escList)
{
result.Add(record.Actions.Replace(record.Actions.Split(' ')[1], "'n" + record.Actions.Split(' ')[1]));
}
不确定我是否正确理解了您想要的结果,但我认为性能方面,您会对使用StringBuilder而不是List感兴趣。这是我做的一个样本:
class Program
{
static void Main(string[] args)
{
string action1 = "05/10/2016 15:23:42- UTC--test";
string action2 = "05/10/2016 16:07:04- UTC--test";
string action3 = "05/10/2016 16:33:54- UTC--test";
string action4 = "06/10/2016 08:24:52- UTC--test";
List<string> sample_actions = new List<string>() { action1, action2, action3, action4 };
Record rec = new Record();
foreach (string sample_action in sample_actions)
{
rec.Actions.AppendLine(sample_action).AppendLine();
}
}
}
class Record
{
public StringBuilder Actions { get; set; }
public Record()
{
Actions = new StringBuilder();
}
}
根据您的需要编辑
假设actions
至少有一个元素:
spacedAtions = actions.Take(1).Concat(actions.Skip(1).Select(a => $"'n{a}));