11. november 2006 - 17:43Der er
7 kommentarer og 1 løsning
Split af ord fra tekst fil
Hej.
Jeg har et lille problem, eller ved ikke om det er et lille problem, men here goes.
Jeg henter informationer fra en tekstfil med følgende kode:
TextReader tr = new StreamReader(Server.MapPath("1-11-2006-35359490.txt"), Encoding.Default);
string line;
while ((line = tr.ReadLine()) != null) { string[] parts = line.Split(";".ToCharArray()); Response.Write(parts[0]); Response.Write(" "); Response.Write(parts[2]); Response.Write("<br>"); }
Response.writes er bare for at tjekke om det er rigtigt putput.
Det er ordet i parts[2] der skal deles op. Hvis vi siger, at ordet er 'BundAsus' eller 'TastaturLogitech'.
Jeg vil gerne have lavet det sådan, at ordet bliver delt op ved det store bogstav i midten, da det forreste "bundt" skal bruges til opslag i db senere hen.
private static string[] hentOplysninger(string text) { string tmp = text.Substring(1); // fjern det første bogstav, som er stort string hardware = ""; // kommer til at indeholde "Bund" eller "Tastatur" string navn = ""; // kommer til at indeholde "Asus" eller "Logitech" int kode = -1; // kommer til at indeholde koden for bogstavet foreach (char c in tmp) { kode = (int)c; if (kode >= 65 && kode <= 90) break; hardware += c; // tilføj bogstavet til strenge "hardware" } hardware = text.Substring(0, 1) + hardware; // indsæt det første bogstav fra "text" navn = text.Substring(hardware.Length); // hent tekst fra position "længden af indholdet af hardware" fra den originale tekst text = hardware + ";" + navn; // sæt væriderne op så vi kan splitte dem string[] udskrift = text.Split(";".ToCharArray()); // split til streng-array return udskrift; // returner streng-arrayen }
Du skal lige rette det til, med static osv.. så virker det også hos dig..
tak for hurtig respons. Jeg kigger lige på det i morgen, men det ser i hvert fald ud til at være det jeg skal bruge. Tak for hjælpen. Jeg vender tilbage hvis jeg slet ikke kan finde ud af det. ;-)
Jeg har lige et tillægsspørgsmål: Hvordan kan det så arrangeres, hvis der nu er nogle af ordene, som skal splittes der hedder: RAMkingston eller PSUnoget eller HDDhitachi?
Så skal du til at lave en ordliste med nøgleord, til alt hardwaren..
Dvs, en liste der indholder nøgleordene på et given format..
Eksempel: "RAM,PSU,HDD,Tastatur,Bund"
Det vil blive lidt bøvlet.. Man skal så checke om tegn "0" til tegn "ukendt position" er lig nogen af nøgleordene (f.eks. "RAM")..
Man kunne også vælge at erstatte værdien nøgleordet med ingenting, med brug af case-sensitive (dvs, forskel på store/små bogstaver, se eksempel nederest), og derefter sammenligne det originale ord med det erstattede..
Men så må man bare håbe, at en producent ikke indeholder nøgleordet, i samme case.. Dvs, ordet "HDDRAMMSTEIN" (nøgleord ="hdd", producent = "rammstein") ville slå fejl.. med mindre at man sørger for, at det er fra position 0, at der erstattes..
Det nemmeste ville nok være, at dele ordret op i din liste/database/excel-fil, så det altid ser sådan ud..
Eksempel med deling/delimiter ved "_": hardware_producent
På den måde vil det være meget nemt at skille ordret ad..
Eksempel på case-sensitive: "Test" er forskellig fra "tEst", "teSt" og "tesT".
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.