Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
Avatar
David Mrázek:6.10.2020 7:43

Zdravím rád bych se zeptal jak na stringbuilder, v angličtině moc nevynikám a v češtině jsem to nikde nenašel tak se chci zeptat zda by nebyla nějaká rada.

Zkusil jsem: například

using System;

using System.IO;

using System.Windows.Forms;

namespace mise2
{
    public partial class Form1 : Form
    {


        public static String filePath_input = string.Empty;

        public Form1()
        {
            InitializeComponent();
            richTextBox1.AutoSize = true;
        }

        public void button1_Click(object sender, EventArgs e)
        {
            OpenFileDialog openFileDialog = new OpenFileDialog();

            openFileDialog.InitialDirectory = @"C:\Users\";


            openFileDialog.Filter = "txt files (*.txt)|*.txt|All files (*.*)|*.*";
            openFileDialog.FilterIndex = 2;
            openFileDialog.RestoreDirectory = true;


            if (openFileDialog.ShowDialog() == DialogResult.OK)
            {
                filePath_input = openFileDialog.FileName;
                textBox1.Text = filePath_input;
            }
        }


        public static
            string FindLineAboveAsterisks(string path)
        {
            TextReader sr = File.OpenText(path);
                return FindLineAboveAsterisks(sr);
        }

        public  static string FindLineAboveAsterisks(TextReader reader)
        {

            string result = reader.ReadLine();
         string line = String.Empty;


                while (result is object && (line = reader.ReadLine()) is object)
                {
                    int startIndex = 21;
                    int length = 9;

                    if (line.Contains("***"))
                    {
                        return result;
                    }

                    {
                        result = line.Substring(startIndex, length);
                    }
                }
                return string.Empty;
            }







        private void button2_Click(object sender, EventArgs e)
        {
            Form2 frm2= new Form2();
            frm2.Show();
            Hide();
        }

}
}

Chci docílit: Po tomto kodu chci aby vypsal všechny hodnoty nalezené v souboru do textboxu, jenže jakmile použiji while tak to mi načte do první hodnoty true a dál nepokračuje, tak jsem si myslel, zda by nešla použít metoda stringbuilder abych to nemusel celé přepisovat.Budu vděčný za každou radu.
Přeji hezký den :)

Odpovědět
6.10.2020 7:43
kde je vůle, tam je cesta
Avatar
Ghst
Člen
Avatar
Ghst:6.10.2020 11:38

Ahoj,

pravděpodobně vidím, že problém je v logice tvého cyklu. Po prvním nálezu ***, ukončíš cycelou funkci

string result = reader.ReadLine();
string line = String.Empty;
string prevLine = string.Empty;

       while ((line = file.ReadLine()) != null) //můžeš napsat třeba takto
       {
           int startIndex = 21;
           int length = 9;

           if (line.Contains("***"))
           {
               result += prevLine .Substring(startIndex, length);
           }
           else
           {
               prevLine = line;
           }
       }
       return result ;
Akceptované řešení
+20 Zkušeností
+2,50 Kč
Řešení problému
 
Nahoru Odpovědět
6.10.2020 11:38
Avatar
Ghst
Člen
Avatar
Ghst:6.10.2020 12:27

Kdybys to chtěl použít se stringbuilderem:

 int startIndex = 21;
 int length = 9;
StringBuilder result = StringBuilder ();
string line = String.Empty;     //aktuálně čtený řádek
string prevLine = string.Empty; //předchozí řádek

       while ((line = file.ReadLine()) != null) //čteme celý soubor
       {
           if (line.Contains("***"))     //aktuální řádek obsahuje ***
           {
                //nezapomen kontrolovat jestli string je dostatecne dlouhy, pro substring, jinak bude výjímka
               result.Append(prevLine .Substring(startIndex, length));       //nalzený text přidáme do výsledku
           }
           prevLine = line;
       }
       return result.ToString() ;
 
Nahoru Odpovědět
6.10.2020 12:27
Avatar
Odpovídá na Ghst
David Mrázek:6.10.2020 13:57

děkuju moc, snad si stím zbytek už poradím :D

Nahoru Odpovědět
6.10.2020 13:57
kde je vůle, tam je cesta
Avatar
Ghst
Člen
Avatar
Odpovídá na David Mrázek
Ghst:6.10.2020 15:33

Kdyby něco napiš.

Nicméně doporučuji si pak projít kód a třeba si do komentářů napsat, co to má dělat. Předpokládám, že by jsi tu chybu taky časem objevil ;)

 
Nahoru Odpovědět
6.10.2020 15:33
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 5 zpráv z 5.