Witam,
Chciałbym prosić o pomoc przy operacjach na plikach tekstowych a konkretnie jego przeszukiwaniu.
Otóż mój problem polega na tym, że chcę aby mój program przeszukał plik txt w poszukiwaniu wyrazu z textboxa i jeżeli znajdzie to słowo, żeby ustawił kursor w pliku na tym słowie i wypisał w ritchtextbox wszystko poniżej tego słowa.
Dodam, że do odczytu plików używam StreamReadera. Proszę o pomoc
- Rejestracja:prawie 13 lat
- Ostatnio:ponad 9 lat
- Postów:66
- Rejestracja:prawie 13 lat
- Ostatnio:ponad 9 lat
- Postów:66
To jest część kodu którą napisałem. Po wciśnięciu buttona pobierana jest ścieżka do pliku i w textboxy zostają ustawione dane pierwszej linijki z pliku. W timerze co sekundę sprawdzany jest warunek, który jak jest spełniony pobiera następną linijkę z pliku. Teraz chcę zrobić, żeby timer co sekundę sprawdzał czy w pliku istnieje wyraz podany w textboxie6. jeżeli tak to żeby przeniósł linie do tego słowa i pobrał następną linijkę po tym słowie.
StreamReader st;
string line;
private void button5_Click(object sender, EventArgs e)
{
var file = new OpenFileDialog();
if (file.ShowDialog() == DialogResult.OK)
{
st = new StreamReader(file.FileName, Encoding.GetEncoding("ISO-8859-2"));
textBox1.Clear();
textBox2.Clear();
textBox3.Clear();
textBox4.Clear();
textBox5.Clear();
line = st.ReadLine();
string[] words = line.Split(':');
textBox1.Text = words[0];
int txtbox = Int32.Parse(textBox1.Text);
textBox1.Clear();
textBox1.Text = txtbox.ToString();
textBox2.Text = words[1];
textBox3.Text = words[2];
textBox4.Text = words[3];
textBox5.Text = textBox1.Text + ":" + textBox2.Text + ":" + textBox3.Text;
}
}
int licz1;
private void napisytim_Tick(object sender, EventArgs e)
{
label3.Visible = true;
if (textBox6.Text == textBox5.Text)
{
licz1++;
if (licz1 == 1)
{
label3.Text = textBox4.Text;
}
else if (licz1 != 1)
{
label3.Text = "";
textBox1.Clear();
textBox2.Clear();
textBox3.Clear();
textBox4.Clear();
textBox5.Clear();
}
line = st.ReadLine();
string[] words = line.Split(':');
textBox1.Text = words[0];
int txtbox = Int32.Parse(textBox1.Text);
textBox1.Clear();
textBox1.Text = txtbox.ToString();
textBox2.Text = words[1];
textBox3.Text = words[2];
textBox4.Text = words[3];
textBox5.Text = textBox1.Text + ":" + textBox2.Text + ":" + textBox3.Text;
if (licz1 != 1)
{
label3.Text = textBox4.Text;
}
}
- Rejestracja:prawie 13 lat
- Ostatnio:ponad 9 lat
- Postów:66
Problem rozwiązany. Jeśli ktoś miałby kiedyś z tym problem to zamieszczam rozwiązanie:
string[] lines = File.ReadAllLines("plik");
foreach (string line in lines)
{
if (line.StartsWith(""))
{
W1
}
else
{
W2
}
}
Do tablicy pobierany jest cały plik i wyszukiwany jest wyraz. Jeżeli jest znaleziony to wykona "W1", jeżeli nie to wykona "W2".
- Rejestracja:około 12 lat
- Ostatnio:ponad 11 lat
- Postów:103
Nie prościej tak (pseudokod):
string contentOfFile = CzytajPlik();
string substring = contentOfFile.substring(contentOfFIle.indexof("słowo"), "słowo".length);
Można to połączyć z funkcją where i wychodzi nam jednolinijkowiec.