私は、リスト内の配列で構成されたジャーナルを作成しています。配列はすべて新しいエントリであり、リストはジャーナルです。ここでは、私がこれまでにそれを解決するために試した方法は次のとおりです。string []リスト内で問題が発生しました
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つのインデックススペースを時間、タイトル、テキストに使い分け、それらを組み合わせてリストに入れて、タイトルを検索するときに来るようにすることですグループとして
ジャーナルを宣言するときに通常の文字列リストを使用しようとしましたが、挿入するインデックスを指定しなくてもその配列を追加することはできません。リストの型を文字列[]に変更すると、foreachループは文字列[]を文字列に変換できないため、foreachループ内の文字列を文字列[]に変更することができますすべてを書き出しようとすると、「System.String []」と検索されます。
私は今どこにいるのですか。誰かが私に何が間違っているか教えてもらえれば、私がこれをどのように解決できるかを示すことができれば大いに感謝します。
:
検索用語が含まれているタイトルの最初のエントリを検索するには:のための検索語を含むタイトルを持つすべてののエントリを検索するには
このために文字列配列を使うのではなく、 'JournalEntry'クラスを作成することをお勧めします。 'entry.Time'、' entry.Title'、 'entry.Content'と' entry [0] '、' entry [1] 'と' entry [2]コードでは、 '。 –
'string.Contains'ではなく、' Enumerable.Contains'(配列、リストなどのコレクションで動作するLinqメソッド)を呼び出すことにも注意してください。これにより、タイトルまたはコンテンツに検索語が含まれているかどうかを調べるのではなく、エントリの時間、タイトルまたはコンテンツが、指定された検索用語と正確に等しいかどうかを検索する検索が行われます。 '' abc ".Contains(" b ")'はtrueを返しますが、 '(new string [] {" abc "})を返します。Contains( "b") 'は、その配列に' 'b" '文字列が含まれていないため、falseを返します。 –