如何在字符串属性中每次出现时间戳之前附加换行符

本文关键字:时间戳 换行符 字符串 属性 | 更新日期: 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}));