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.
}
}
请注意,要使此特定代码正常工作,您不得在标题中包含时间戳。
我刚刚制作了一个日志,允许用户向书中添加标题和 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.
}
}
请注意,要使此特定代码正常工作,您不得在标题中包含时间戳。