当前位置: 首页 > 知识库问答 >
问题:

字符串[]内的列表导致问题

郎诚
2023-03-14

我正在创建一个日志,它由列表中的一个数组组成,数组是每个新条目,列表是日志。以下是我迄今为止试图解决的问题:

using System;
using System.Collections.Generic; 
using System.Linq;                

namespace Journal
{
    class Program
    {
        static void Main(string[] args)
        {
            int menuChoice = 0;
            List<string[]> journal = new List<string[]>();

            while (menuChoice != 4)
            {
                Console.WriteLine("\n\t\t===Journal===");
                Console.WriteLine("\t[1] New entry in the journal");
                Console.WriteLine("\t[2] Search entry in the journal");
                Console.WriteLine("\t[3] Show contents of the journal");
                Console.WriteLine("\t[4] Exit");
                Console.Write("\tChoose: ");

                int.TryParse(Console.ReadLine(), out menuChoice);
                {
                    switch (menuChoice)
                    {
                        case 1:
                            {
                                string[] entry = new string[3];
                                DateTime time = DateTime.Now;
                                entry[0] = Convert.ToString(time);
                                Console.Write("\n\tWrite your title: ");
                                entry[1] = Console.ReadLine();
                                Console.Write("\n\tWrite your new entry: ");
                                entry[2] = Console.ReadLine();
                                journal.Add(entry);
                            }
                            break;
                        case 2:
                            Console.Write("\n\tSearch entry in the journal: ");
                            string searchTerm = Console.ReadLine();
                            for (int i = 0; i < journal.Count; i++)

                                if (journal[i].Contains(searchTerm))
                                {
                                    Console.WriteLine(journal[i]);
                                }
                                else
                                {
                                    Console.WriteLine("\n\tYour search was not found.");
                                }
                            break;
                        case 3:
                            Console.WriteLine("\n\tJournal:");
                            foreach (string[] item in journal)
                                Console.WriteLine("\n\t" + item);
                            break;
                        case 4:
                            break;
                    }
                }
            }
        }
    }
}

我在尝试实现这一点时遇到了很多困难,但现在仍然没有。我试图做的是在数组中使用时间、标题和文本的3个索引空间,然后将这3个组合到列表中,使它们成为列表中的单个元素,因此当我搜索标题时,它们会作为一个组出现。

我试图在声明日志时使用普通字符串列表,但如果不指定要插入的索引,我就无法将数组添加到其中。当我将列表的类型更改为string[]时,foreach循环停止工作,因为它们无法将string[]转换为string,所以我将foreach循环中的字符串更改为string[],现在,当我尝试写出所有内容或搜索时,我得到的只是“System.string[]”。

这正是我现在的处境,如果有人能告诉我我做错了什么,或者告诉我如何解决这个问题,我将不胜感激。

共有3个答案

葛鸿熙
2023-03-14

解决这个问题的最简单方法是创建一个带有标题日期正文属性的JournalEntry类。在该类中,您可以重写ToString,以生成格式化输出。

在不创建类的情况下,解决此问题的最简单方法是明智地应用少量LINQ。也可以使用String。Join将字符串数组合并为控制台的单个字符串。WriteLine

要搜索标题包含搜索词的第一个条目:

var selected = journal.FirstOrDefault(item => item[1].Contains(searchTerm));
if (selected != null)
{
    // selected is the first string[] with a title containing the search term.
    Console.WriteLine(String.Join("\r\n", result));
}

要搜索标题中包含搜索词的所有条目,请执行以下操作:

var selected = journal.Where(item => item[1].Contains(searchTerm));
foreach (var result in selected)
{
   // result is the string[] journal entry
   Console.WriteLine(String.Join("\r\n", result));
}
钱志
2023-03-14

日志是一个字符串数组列表。日志[i]是一个字符串数组。要打印字符串数组中的值,需要循环遍历该数组。

if (journal[i].Contains(searchTerm))
{
     for (int j = 0; j < journal[i].Count; j++)
         Console.WriteLine(journal[i][j]);
}

或作为Foreach

foreach(string item in journal[i])
    Console.WriteLine(item);
汪阳飇
2023-03-14

使用linq,您可以从子列表列表中生成一个列表:

foreach(var item in journal.SelectMany(x => x))
{
   // item is string
}

您需要使用系统添加。林克 当然。

 类似资料:
  • 当req.query.filter是一个没有空格的字符串时,比如'education'······这管用。当我试图找到一个有空格的列名时,比如'this havs空格',这个查询不起作用。我怎么才能修好这个?

  • 问题内容: 我的长字符串不适合屏幕的宽度。例如。 为了使阅读更容易,我想到了用这种方式编写它- 但是,我意识到第二种方法使用字符串连接,并会在内存中创建5个新字符串,这可能会导致性能下降。是这样吗 还是编译器足够聪明,以至于我只需要一个字符串就可以了?我如何避免这样做? 问题答案: 我意识到第二种方法使用字符串连接,并将在内存中创建5个新字符串,这可能会导致性能下降。 不,不会。由于这些是字符串文

  • 我使用Java EE7和GlassFish 4.1服务器来构建一个系统,基本上你可以在这个系统中发表想法,每个想法都可以有标签。我已经把实体的概念声明为: 阅读JPA:查询实体中的可嵌入列表后,我尝试通过Tag以以下方式查找: 但是我得到了一个TransactionRolledbackLocalException,原因是: 导致:java.lang.IllegalArgumentException

  • 使用Python我试图访问一个字段是字符串格式的CSV文件,其中有一个字典列表。 一行 NameError Traceback(最近的调用最后)在 () ---- C:\Program Data\Anaconda3\lib\site-包\熊猫\core\series.py在应用(自我,功能,convert_dtype,args,**kwds)3190 其他:3191值=self.astype(对象

  • 问题内容: 如果我有一个字符串列表,例如: 为了摆脱每个字符串中的所有s,我该怎么办?我尝试在for循环中使用或,但是它无法像正常字符串(不在列表中)那样工作。有人有建议吗? 问题答案: 尝试这个:

  • 问题内容: 我有阵列中的国家/地区列表,我想从列表中选择一个国家/地区(可能是使用随机的?),但是我自己还没有找到答案… 这是我到目前为止所拥有的: 问题答案: 尝试: