c#如何写整个数组如果字符串包含关键字
本文关键字:字符串 包含 关键字 如果 数组 何写整 | 更新日期: 2023-09-27 18:17:05
我正在搜索一个stringarray中的字符串是否包含关键字。如果字符串得到匹配,我希望在控制台上输出找到该字符串的数组。
到目前为止,我已经成功地输出了字符串数组中包含关键字的每个字符串。
我试图通过输出数组来解决这个问题,但随后我得到这个消息"系统。String [] "
然而,这不是我的意图。我想显示这个数组。我在想,我该怎么做呢?
//对不起,我的英语不好。
下面是我代码中的相关部分:
List<string[]> loggbok = new List<string[]> { };
string[] log = new string[3]; //date, title, post
DateTime date = DateTime.Now;
log[0] = "'n'tDate: " + date.ToLongDateString() + " Time: " + date.ToShortTimeString();
Console.Write("'tTitle: ");
log[1] = "'tTitle: " + Console.ReadLine();
Console.Write("'tPost: ");
log[2] = "'tPost: " + Console.ReadLine();
loggbok.Add(log);
log = new string[3];
Console.Write("'n'tSearch: ");
string keyWord;
keyWord = Console.ReadLine();
foreach (string[] item in loggbok)
{
foreach (var s in item)
{
if (s.Contains(keyWord))
{
Console.WriteLine(item);
}
}
}`enter code here`
要显示整个数组,请尝试:
Console.WriteLine(String.Join("'r'n", item));
你可以这样过滤数组:
Console.WriteLine(String.Join("'r'n", item.Where(item => item.Contains(keyWord)).ToArray());
或
string[] filtered = item.Where(s => s.Contains(keyWord)).ToArray();
Console.WriteLine(String.Join("'r'n", filtered));
如果你想过滤整个日志(字符串数组列表)使用SelectMany扩展。
string[] filtered = loggbok.SelectMany(s => s.Contains(keyWord)).ToArray();
Console.WriteLine(String.Join("'r'n", filtered));
如果我正确理解您的问题,您需要找到关键字的整个数组。你错的地方是你输入了Console.WriteLine(item)
,它只会打印那个项目。
相反,创建一个函数,如果在该数组中找到关键字,则返回true
,如果没有,则返回false
。你的代码看起来像这样:
string keyWord;
keyWord = Console.ReadLine();
foreach (string[] item in loggbok)
{
if (checkItem(item)) {
for(int i = 0; i < item.Length; i++){
Console.WriteLine(item[i]);
}
}
}
public bool checkItem(string[] item, string keyWord) {
foreach(var s in item) {
if(s.Contains(keyWord))
return true;
}
return false;
}