Gå til innhold

ukjent antall kategorier med ukjent antall elementer i hver kategori..


Anbefalte innlegg

har tenkt å lage et program der du kan legge til kategorier og forkjellige elementer i kategoriene. Det ser foreløpig slik ut:

19506781.png

alle ordene og kategoriene skal loades fra en tekst fil.. ekempel:

[kategori1]

ord1

ord2

ord3

ord4

ord5

[kategori2]

ord1

ord2

ord3

ord4

ord5 osv..

 

har funnet en måte å gjøre dette på, men den er tvilsomt veldig effektiv:

 

string[,] wordsByCategory = new string[20, 200];

private void DictionaryCreator_Load(object sender, EventArgs e)
{
   string[] allWords = new string[File.ReadAllLines(Directory.GetCurrentDirectory() + "\\words.txt").Count()];

   using (StreamReader sr = new StreamReader(Directory.GetCurrentDirectory() + "\\words.txt"))
   {
       string line;
       for (int i = 0; (line = sr.ReadLine()) != null; i++)
       {
           allWords[i] = line;
       }
   }

   for (int i = 0, k = 0; i < allWords.Count(); i++, k++)
   {
       if (Regex.IsMatch(allWords[i], "[[\\w]]"))
       {
           var match = Regex.Match(allWords[i], "[\\w]+");
           wordsByCategory[k, 0] = match.ToString();

           for (int j = (i + 1), n = 1; j < allWords.Count(); j++, n++)
           {
               if (Regex.IsMatch(allWords[j], "[[\\w]]"))
               {
                   i = (j - 1);
                   break;
               }

               else  
                   wordsByCategory[k, n] = allWords[j];
           }
       }
   }

   for (int i = 0; i < 20; i++)
   {
       if (wordsByCategory[i, 0] != null)
           categoriesListBox.Items.Add(wordsByCategory[i, 0]);
       else
           break;
   }

   for (int j = 1; j < 200; j++)
   {
       if (wordsByCategory[0, j] != null)
           wordsListBox.Items.Add(wordsByCategory[0, j]);
       else
           break;
   }
}

 

og når indexen blir endret:

 

private void categoriesListBox_SelectedIndexChanged(object sender, EventArgs e)
{
   wordsListBox.Items.Clear();

   for (int j = 1; j < 200; j++)
   {
       if (wordsByCategory[categoriesListBox.SelectedIndex, j] == null)
           break;

       else
           wordsListBox.Items.Add(wordsByCategory[categoriesListBox.SelectedIndex, j]);
   }
}

 

men når jeg skal ting som å legge til og fjerne ord blir multidimensjonale arrays et prakk. Er det en enklere vei å gjøre dette på, evt bruk av(hvis mulig) multidimensjonale Lists eller noe i den duren?

Endret av Watt
Lenke til kommentar
  • 1 måned senere...
Videoannonse
Annonse
  • 2 uker senere...

[serializable]
public class Column
{
 public string Header { get; set; }
 public List<string> Elements { get; private set; }

 public Column()
 {
   Elements = new List<string>();
 }
}
[serializable]
public class Table
{
 public List<Column> Columns { get; private set; }
 public Table()
 {
   Columns = new List<Column>();
 }
}

Generelt: Ikke bruk arrays med mindre du har en spesifikk grunn til det. Og i dette tilfellet er arrays særdeles uegnet.

Endret av GeirGrusom
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...