c#,擦除列表中的数组并将日期和时间添加到每个 post

c#, Erase array inside a list and add date and time to every post

我刚刚制作了一个日志,允许用户向书中添加标题和 post。然后他们可以选择将其打印出来、搜索、删除或退出程序。我遇到的唯一问题是案例 4,如何让用户在案例 4 中删除他的 post?我的另一个问题是我希望将日期和时间添加到每个 post,并且我希望每次显示 post 时都将其打印出来。非常感谢任何答案。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;

namespace Loggbok
{
    class MainClass
    {
        public static void Main(string[] args)
        {
            DateTime tiden = DateTime.UtcNow;
            bool running = true;//Ger ett booleskt värde till variabeln     running för att kunna skapa en loop
            List<string[]> loggbok = new List<string[]>();
            // int loggIndex = 0; // Används för att fylla Arrayen
            while (running)//Här skapas loopen
            {

            Console.WriteLine("\nVälkommen till loggboken!");
            Console.WriteLine("\n[1] Skriv ett inlägg");
            Console.WriteLine("[2] Skriv ut alla inlägg");
            Console.WriteLine("[3] Sök inlägg");
            Console.WriteLine("[4] Radera innehåll");
            Console.WriteLine("[5] Avsluta loggbok");
            Console.Write("\nVälj: ");

            int option;

            try
            {
                option = Int32.Parse(Console.ReadLine());

            }
            catch
            {
                Console.WriteLine("Fel, du får bara skriva in nummer");
                continue;
            }

            switch (option)
            {
                case 1:
                    string[] logg = new string[2];
                    Console.WriteLine(tiden);
                    Console.WriteLine("Ange en Titel");
                    logg[0] = Console.ReadLine();
                    Console.Clear();
                    Console.WriteLine("Ange text");
                    logg[1] = Console.ReadLine();
                    loggbok.Add(logg);
                    break;


                case 2:
                    foreach (string[] item in loggbok)
                    {
                        Console.WriteLine(item[0]);
                        Console.WriteLine(item[1]);
                    }
                    Console.ReadLine();
                    break;




                case 3:

                    Console.WriteLine("Skriv in ett ord du vill söka efter i loggboken");
                    var nyckelord = Console.ReadLine();
                    var entries = loggbok.Where(entry => entry.Any(item =>item.IndexOf(nyckelord, StringComparison.OrdinalIgnoreCase) > -1));
                    foreach (var entry in entries)
                    {
                        Console.WriteLine(string.Join(", ", entry));
                    }
                    if (entries.Count() == 0)
                    {
                        Console.Write("Din sökning misslyckades...");
                    }
                    break;



                case 4:

                    break;


                case 5:

                    running = false;
                    break;



            }
        }
    }
}

}

对于日期和时间的问题,您可以这样做:

loggbok.Add(logg + " " + DateTime.Now.ToString("dd.MM.yyy HH:mm:ss"));

将当前日期和时间附加到您的 post。

对于删除 post 的问题,您可以要求用户输入索引号,然后从列表中删除具有给定索引的条目作为开始。

这会将时间戳添加到标题中:

logg[0] = String.Format("[{0}] {1}", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), Console.ReadLine());

如果您想将时间戳添加到 body,只需将 logg[0] 替换为 logg[1]

上面的例子会导致:

[2017-04-17 23:48:34] This is my post

也可以放在body之后:

logg[1] = String.Format("{0}{1}{2}", Console.ReadLine(), Environment.NewLine, DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));

...这将导致:

This is the body.
2017-04-17 23:48:34

要按标题删除 post,您必须遍历整个列表并检查每个标题,直到找到与用户输入匹配的标题。

这将删除它可以找到的第一个 post 指定标题:

Console.WriteLine("Skriv titeln på det inlägg du vill ta bort:")
string title = Console.ReadLine();

for(int x = 0; x < loggbok.Count; x++) //Loopa igenom varje inlägg.
{
    if(String.Equals(loggbok[x][0], title, StringComparison.OrdinalIgnoreCase)) //Icke skiftlägeskänslig matchning av titeln.
    {
        loggbok.RemoveAt(x); //Matchning funnen.
        break; //Avsluta loopen.
    }
}

请注意,要使此特定代码正常工作,您不得在标题中包含时间戳。