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`

c#如何写整个数组如果字符串包含关键字

要显示整个数组,请尝试:

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;
}