Import tekstu z pliku do listview

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

Kopiuj
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

Kopiuj
1asd
2asd
3asd
4asd
5asd
6asd
underTaker
  • Rejestracja:ponad 13 lat
  • Ostatnio:około 12 lat
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

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

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

SI
  • Rejestracja:prawie 16 lat
  • Ostatnio:około 3 lata
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

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

Robiłem też tak

Kopiuj
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

Kopiuj
 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

Kopiuj
            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

Kopiuj
StringBuilder sb = new StringBuilder();
_13th_Dragon
  • Rejestracja:ponad 19 lat
  • Ostatnio:3 dni
0
Kopiuj
            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();
            }

Wykonuję programy na zamówienie, pisać na Priv.
Asm/C/C++/Pascal/Delphi/Java/C#/PHP/JS oraz inne języki.
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

_13th_Dragon
Bo to pewnie windows, zamień "{0}\n" na "{0}\r\n". Właściwie to powinieneś użyć String eol = System.getProperty("line.separator"); i dodawać: sb.Append(string.Format("{0}{1}", listViewSubItem.Text,eol)); Wtedy będzie poprawnie dla windows i dla linux i dla MAC.
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

Kopiuj
0

Jakiej biblioteki mam użyć do tego ?

Kopiuj
System.getProperty
_13th_Dragon
Pomerdało mi się z Java.
RE
Moderator
  • Rejestracja:około 18 lat
  • Ostatnio:około rok
0

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

Environment.NewLine

0

Działa tylko takie coś :

Kopiuj
            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?

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.