Import tekstu z pliku do listview

0

Witam. Chciałbym się dowiedzieć w jaki sposób oddzielić tekst, który zapisany w notatniku oddzielony jest enterem. Mam w notatniku zapisany ciąg "Tsokd<przejście do następnej linii>gkodf i tak dalej", po pobraniu tego zamiast entera pojawia się kwadrat a reszta tekstu jest w jednej linii. Jeżeli wie ktoś jak to zrobić to bardzo proszę o pomoc. Na razie jestem na tym etapie

OpenFileDialog fDialog = new OpenFileDialog();
fDialog.Title = "Plik z postaciami";
fDialog.Filter = "Plik tekstowy|*.txt";
if (fDialog.ShowDialog() == DialogResult.OK)
{
    string ta = File.ReadAllText(fDialog.FileName);
}

Natomiast tekst w znajdujący się w notatniku jest nastepujący

1asd
2asd
3asd
4asd
5asd
6asd
0

Musisz rozbić tekst na wiersze, można to zrobić za pomocą metody Split z parametrem ze znakiem \n, albo - prościej - zamiast File.ReadAllText, użyć File.ReadLines.

0

Bardzo dziękuje, udało się to zrobić, lecz mam kolejny problem. Jak mogę odczytać całą zawartość listview?

0

Wyszło mi coś z tego zapisywania ale jest jeszcze problem. Jak mogę usunąć spacje z zapisanego tekstu i kwadraty, ponieważ tekst wygląda tak 1asd.12355.234523.4234234 2asd 3asd 4asd 5asd 6asd
A chciałbym zrobić aby wyglądał tak

1asd.12355.234523.4234234
2asd
3asd
4asd
5asd
6asd	

Co muszę zrobić lub czego użyć?

0

Białe znaki z początku i końca stringa możesz usunąć metodą string.Trim(). O to ci chodziło?

0

Nie mam już pomysłów. Co muszę tutaj zrobić aby usunąć te pieprzone spacje czy co to jest

sb.Append(string.Format("{0}", listViewSubItem.Text));

Robiłem też tak

sb.Append(string.Format("{0}", System.Environment.NewLine, listViewSubItem.Text)); co prawda entery działają, lecz zamiast tekstu mam te kwadraty...

. Proszę o pomoc ;/

0

Wreszcie udało mi się to zrobić, lecz jest następny problem.. Mam tekst 1
2
3
4
5
6

 w listview. Po zapisaniu ich do pliku tekstowego jest tak <code>1
12
123
1234
12345
123456

Nie wiem dlaczego ale te liczby jakby dodawały się z każdą linią. Tutaj daje kod

            if (sfd.ShowDialog() == DialogResult.OK)
            {
                string ta = sfd.FileName;
                StreamWriter sw = new StreamWriter(File.Create(ta));

                foreach (ListViewItem lvi in listView1.Items)
                {
                    foreach (ListViewItem.ListViewSubItem listViewSubItem in lvi.SubItems)
                    {
                        //sb.Append(string.Format("{0}", System.Environment.NewLine, listViewSubItem.Text));
                        sb.Append(string.Format("{0}", listViewSubItem.Text));
                    }
                    sw.WriteLine(sb.ToString());
                }
                sw.Dispose();
            }
0

W kodzie zapomniałem o

StringBuilder sb = new StringBuilder();
0
            if (sfd.ShowDialog() == DialogResult.OK)
            {
                string ta = sfd.FileName;
                StreamWriter sw = new StreamWriter(File.Create(ta));
 
                foreach (ListViewItem lvi in listView1.Items)
                {
                    foreach (ListViewItem.ListViewSubItem listViewSubItem in lvi.SubItems)
                    {
                        //sb.Append(string.Format("{0}", System.Environment.NewLine, listViewSubItem.Text));
                        sb.Append(string.Format("{0}\n", listViewSubItem.Text));
                    }
                }
                sw.WriteLine(sb.ToString());
                sw.Dispose();
            }
0

Z tego kodu co podałeś otrzymałem to 1<kwadrat>2<kwadrat>3<kwadrat>4<kwadrat>5<kwadrat>6<kwadrat>. Wszystko w jednym ciągu, nie jeden pod drugim

0

Zamieniłem tylko {0} na {0}\r\n i to otrzymałem 1

1
2

1
2
3

1
2
3
4

1
2
3
4
5

1
2
3
4
5
6

0

Jakiej biblioteki mam użyć do tego ?

System.getProperty
0

Żadnej, @_13th_Dragon myślał, że to Java.

Environment.NewLine

0

Działa tylko takie coś :

            StringBuilder sb;

            if (sfd.ShowDialog() == DialogResult.OK)
            {
                sb = new StringBuilder();
                string ta = sfd.FileName;
                StreamWriter sw = new StreamWriter(File.Create(ta));

                foreach (ListViewItem lvi in listView1.Items)
                {
                    foreach (ListViewItem.ListViewSubItem listViewSubItem in lvi.SubItems)
                    {
                        //sb.Append(string.Format("{0}", System.Environment.NewLine, listViewSubItem.Text));
                        //string eol = Environment.NewLine;
                        sb.Append(string.Format("{0}", listViewSubItem.Text));
                    }
                    sw.WriteLine(sb.ToString());
                }
                sw.Dispose();
            }

Lecz nie wiem dlaczego dodaje mi kolejne liczby skoro mam w listview wpisane 1,2,3,4,5,6, jedno pod drugim. Natomiast z tego otrzymuje 1,12,123,1234,12345,123456

0

Umie ktoś mi pomóc?

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