Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz
  • 0

Usuwanie duplikatów z pliku .txt


d'emploi

Pytanie

Opublikowano

Mam duży plik tekstowy (okkoło 10000 wierszy) wyglądających tak:

"aaaaaaaa";"111111111"
"aaaaaaaa";"222222222"
"aaaaaaaa";"333333333"
"bbbbbbbb";"111111111"
"bbbbbbbb";"222222222"
"bbbbbbbb";"333333333"

I chciałbym pousuwać duplikaty (by zostało tak), by zostało tak:

"aaaaaaaa";"111111111"


"bbbbbbbb";"111111111"

A później pousuwać spacje, by zostało tak

"aaaaaaaa";"111111111"
"bbbbbbbb";"111111111"

Później pousuwać " i zastąpić ; na " by zostało tak:

aaaaaaaa:111111111
bbbbbbbb:111111111

A na samym końcu pousuwać wiersze, w których albo pierwsza część jest mniejsza niż 6 znaków, druga część jest mniejsza niż 6 znaków i usunąć również te, gdzie pierwsza część ma więcej niż 20 znaków i również druga. Chciałbym, aby te wartości mógłbym wpisywać w textbox by ciagle nie zmieniać kodu.

 

Takie pytanie. Dałoby rade wykrywać duplikaty, np.

aaaaaaaaB:1111111111
aaaaaaaaC:1111111111
aaaaaaaa1:A111111111

I po wykryciu ze to sa duplikaty (prawie) zostaje tylko pierwszy wiersz

 

aaaaaaaaB:1111111111

 

3 odpowiedzi na to pytanie

Rekomendowane odpowiedzi

Opublikowano

heh, musisz te wszystkie kody połączyć w jedno ;) jutro Ci to pomogę ogarnąć jakoś na pw :)

"Zwei Dinge sind unendlich, das Universum und die menschliche Dummheit, aber beim Universum bin ich mir nicht ganz sicher."
~A. Einstein

Opublikowano

Kolejno 1:

http://stackoverflow.com/questions/1245243/delete-specific-line-from-a-text-file
2:

string input = "tekst z twojego wczytanego pliku";
string output; //Uzyskany tekst
 
input = input.Replace(" ", ""); //usuń jakieś losowe spacje - jeśli chcesz je zachować usuń tą linijkę
output = Regex.Replace(input, @"^\s*$\n|\r", "", RegexOptions.Multiline);
3:

string input = "twój tekst wczytany z pliku";
string output = ""; //Jeśli będzie pusty string to się nie skompiluje
 
using (StringReader reader = new StringReader(input))
{
    string line;
    while ((line = reader.ReadLine()) != null)
    {
        if (line.StartsWith("\""))
            line = line.Substring(1);
        if (line.EndsWith("\""))
            line = line.Substring(0, line.Length - 1);
        if (line.Contains("\";\""))
            line = line.Replace("\";\"", ":");
        output += "\n" + line;
    }
    if (output.Length > 1)
        output = output.Substring(1); //usunięcie znaku nowej linii na początku
}
4/5:

string input = "twój tekst wczytany z pliku";
string output = String.Empty; //Jeśli będzie pusty string to się nie skompiluje

using (StringReader reader = new StringReader(input))
{
    string line;
    while ((line = reader.ReadLine()) != null)
    {
        if (line.StartsWith("\""))
            line = line.Substring(1);
        if (line.EndsWith("\""))
            line = line.Substring(0, line.Length - 1);
        if (line.Contains("\";\""))
            line = line.Replace("\";\"", ":");
        if (line.Contains(":")) // na wypadek gdyby zabłąkała się tu jakaś linia która nie może zostać wczytana
        {
            string primary, secondary = String.Empty;
            primary = line.Substring(0, line.IndexOf(":"));
            secondary = line.Substring(line.IndexOf(":") + 1);
            if (!(primary.Length < 6 || primary.Length > 20 || secondary.Length < 6 || secondary.Length > 20))
                output += "\n" + line;
        }
    }
    if (output.Length > 1)
        output = output.Substring(1); //usunięcie znaku nowej linii na początku
}
Dane polecam wyświetlać w richTextBox zamiast textBox ;)

A co do ostatniego to kombinuj sam, za mało wiadomo o tym jakie różnice mogą wystąpić (jeden znak na środku linii itd)

 

Pozdrawiam,

Paweł

"Zwei Dinge sind unendlich, das Universum und die menschliche Dummheit, aber beim Universum bin ich mir nicht ganz sicher."
~A. Einstein

Opublikowano

Nie za bardzo sie znam. Czy to ma wygladac tak, ze z 1. richtextboxa pobiera tekst i zmieniony wysyła do 2 richtextboxa. Pozniej gdy chce obrobic tekst dalej pobiera z 2 i wklepuje do 3 itd? Chcialbym zeby to wszystko bylo w 1 programie przy 1 kliknieciu

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...