Dostep do zmiennej

0

Jak stworzyć zmienna tmp by po wpisaniu do niej tmp = col[0]; byla wykrywana w if (tmp !=null)?

probowalem nawet zapisac ja jakos static ale caly czas widac ja jako null

    File.Copy(saveFileDialog1.FileName, tempFileName, true);

                    
                    using (var streamReader = new StreamReader(tempFileName))
                    using (var streamWriter = new StreamWriter(saveFileDialog1.FileName))
                    {
                        string line;
                        int count = 1;
                        


                        while ((line = streamReader.ReadLine()) != null)
                        {
                            if (count > 1)
                            {
                                string[] col = line.Split(new char[] { '\t' });

                                if (line.StartsWith("ABC"))
                                {
                                    if (tmp !=null)
                                    {
                                        if (!string.IsNullOrWhiteSpace(col[3]))
                                        {
                                            line = line.Replace(col[3], col3] + " " + tmp);
                                            streamWriter.WriteLine(line);
                                            tmp = null;
                                        }
                                        else
                                        {
                                            col[34] = tmp;
                                            line = String.Join("\t", col);
                                            streamWriter.WriteLine(line);
                                            tmp = null;
                                        }
                                    }
                                    else
                                    {
                                        streamWriter.WriteLine(line);
                                    }

                                }
                                else
                                {
                                    tmp = col[0];
                                    streamWriter.WriteLine("");
                                    count--;
                                }


                            }
                            else
                            {
                                //headers
                                streamWriter.WriteLine(line);
                            }
                            count++;
                          

                        }
                    }
0

tmp = col[0]; jest wykonywane tylko wtedy, gdy line.StartsWith("ABC") jest false. Więc może po prostu ten warunek jest zawsze spełniony?

0

nie..

zalozmy ze plik ma np 2 linie

pierwsza:

ABC ...

dugra:

GFd 2 ...

Ten kawalek kodu mial na celu sprawdzic czy linia zaczyna sie od ABC jesli nie to zapisac do co w lini do tmp i przypisac to w lini z ABC.
Inaczej mowiac tekst Gfd 2 jest czescia ABC tylko zostal przesneisiony do drugiej lini i chce zrobic automat ktory to naprawia.

ale nie zapisuje mi sie wartosc do tmp..

0

No dobrze, ale do tego wystarczy tyle:

using (var streamReader = new StreamReader(tempFileName))
using (var streamWriter = new StreamWriter(saveFileName))
{
    string tmp = null;
    string line;

    while ((line = streamReader.ReadLine()) != null)
    {
        if (line.StartsWith("ABC"))
        {
            tmp = line;
        }
        else
        {
            if (tmp != null)
            {
                tmp += line;
                streamWriter.WriteLine(tmp);
                tmp = null;
            }
        }
    }
}
0

było by prawie dobrze gdyby nie sytuacja gdy mamy np.

linia 1:
ABC
linia2:
ccc
linia3:
123

Skrypt powyzej daje linia1+linia2 i print linia 3, nie skleja linia 1,2,3 itp
Mógłbyś jakoś fixa na to dodać do tego kodu?

0

To jaki w końcu ma być warunek stopu? Bo poprzednio napisałeś, że ma skleić linię z "ABC" z następną. Teraz okazuje się, że jeszcze z kolejną. A co jak będą 3 albo 4? A co jak trzecia będzie też zaczynała się od "ABC"?

0

Mamy plik w konwencji
ABC
ABC
ABC
Lecz może zdarzyć się sytuacja ze po lini z ABC wyskoczy jedna lub kilka innych lini i chce by przyklejalo je do ostatniej ABC jaka była przed wystąpieniem smieci

Kod powyżej objol sytuację gdzie mamy jedną linie sieciowa. Nie wiemy ile ich jest, chce uniknąć ręcznego działania w plik

0

Coś takiego?

using (var streamReader = new StreamReader(tempFileName))
using (var streamWriter = new StreamWriter(saveFileName))
{
    string newLine = null;
    string line;

    while ((line = streamReader.ReadLine()) != null)
    {
        if (line.StartsWith("ABC"))
        {
            if (newLine != null)
            {
                streamWriter.WriteLine(newLine);
            }

            newLine = line;
        }
        else
        {
            newLine += line;
        }
    }

    streamWriter.WriteLine(newLine);
}
0

Tak dzięki wielkie.

1 użytkowników online, w tym zalogowanych: 0, gości: 1