27. november 2003 - 16:41
Der er
15 kommentarer og 1 løsning
StringTokenizer til at finde bestemte ord i en tekstfil
Jeg har følgende fil: 00110010111000000000 The Borg 10 10 1.0 954 327 439 44.5% 1969 100.0% 88.6% 8.6% 01111111110110100100 The Borg 10 9 1.0 1087 354 424 44.4% 2002 90.0% 74.4% 7.7% 11111010111100100001 The Borg 10 8 1.0 1164 402 462 45.6% 1785 80.0% 80.0% 6.9% 01110001110000101101 The Borg 10 7 1.0 1180 407 453 46.3% 2112 70.0% 58.5% 6.0% 11110100010001000010 The Borg 10 7 1.0 1414 444 422 45.2% 1988 70.0% 56.2% 6.0% Er der nogen der ved hvordan jeg fanger første position, og de sidste 3 i hver linie ?. dvs jeg vil gerne fange 00110010111000000000, 100.0%, 88.6%, 8.6% 01111111110110100100,90.0%, 74.4% 7.7% osv. De skal lige bemærkes at filen er en lang fil og ved hver linie skift vises der et [] i notetpad. Ved ikke om det har betydning
Annonceindlæg tema
Offentlig digitalisering
Fra effektivisering til digital suverænitet. Hvordan skaber det offentlige en digital fremtid med AI, sikkerhed og kontrol i centrum?
27. november 2003 - 16:45
#1
Prøv med: String[] words = line.split(" "); words[0] words[words.length-3] words[words.length-2] words[words.length-1]
27. november 2003 - 17:11
#2
for hver linje i filen: StringTokenizer st = new StringTokenizer(linjen," ",false); String start = ""; if(st.hasMoreTokens()) start = st.nextToken(); String last1=""; String last2=""; String last3=""; while(st.hasMoreTokens()){ out1 = out2; out2 = out3; out3 = st.nextToken(); } String samlet = start+" "+out1+" "+out2+" "+out3+"\n"; // goer hvad du vil med den samlede streng
27. november 2003 - 17:42
#3
trolle>> hvor får du out1, out2 og out 3 fra ??
27. november 2003 - 17:44
#4
Jeg tror han mener last1, last2 og last3.
27. november 2003 - 18:28
#5
Det her virker ihvertfald (jeg måtte lige ændre p.g.a. flere mellemrum): public class FirstAndLast { public static void main(String[] args) { String line = "00110010111000000000 The Borg 10 10 1.0 954 327 439 44.5% 1969 100.0% 88.6% 8.6%"; String[] words = line.split("[ ]+"); System.out.println(words[0] + " " + words[words.length-3] + " " + words[words.length-2] + " " + words[words.length-1]); } }
27. november 2003 - 20:49
#6
Lige en kommentar det er ikke nok at jeg fanger første: 00110010111000000000, 100.0%, 88.6%, 8.6% Jeg skal også fange alle de andre. I ovenstående eksempel er der 5 x "resultatsæt". Der bliver måske muligt at der er 50 af slagsen. Så jeg skal have lavet noget koder der tager højde for dette. Arne kigger lige på din kode
27. november 2003 - 21:00
#7
Du læser vel en linie ind ad gangen og processer den.
27. november 2003 - 21:02
#8
Det er egentlig rigtig arne, for hver linie skal jeg oprette et objekt med en set metode.
27. november 2003 - 22:49
#9
Hej arne har lave følgende kode. Men nu fanger den første linie. Jeg kan ikke lige gennesku min while løkke. For hver gennemløb i løkken skal den tage 1 linie og gemme den i et objekt. Det er jo goså fint med din kode, men jeg kan ikke lige gennemskue hvordan jeg får min metode til at gennemløbe alle mine dna strenge //dna = en dna string public void tokenDnaString() { StringTokenizer st = new StringTokenizer(indDNA," ",true); String[] words = indDNA.split("[ ]+"); System.out.println(words[0] + " " + words[words.length-3] + " " + words[words.length-2] + " " + words[words.length-1]); while(st.hasMoreTokens()) { st.nextToken(); //System.out.println("antal gange"); } }
27. november 2003 - 22:53
#10
Jeg tænkte i baner af: BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream("data.fil"))); String line; while ( (line = reader.readLine()) != null) { String[] words = line.split("[ ]+"); System.out.println(words[0] + " " + words[words.length-3] + " " + words[words.length-2] + " " + words[words.length-1]); } men det kan laves på mange måder.
27. november 2003 - 23:19
#11
jeg behøves nu ikke nu input reader da jeg har en metode der indlæser filen og sender den vider til min metode tokenDnaString()
27. november 2003 - 23:21
#12
Du står med en String som indeholder alle linierne adskilt af \n ?
27. november 2003 - 23:40
#13
Ja jeg har en string som hedder indDNA. Den indeholder alle mine data. Åbnet i notepad ser den sådan ud: 00110010111000000000 The Borg 10 10 1.0 954 327 439 44.5% 1969 100.0% 88.6% 8.6% 01111111110110100100 The Borg 10 9 1.0 1087 354 424 44.4% 2002 90.0% 74.4% 7.7% 11111010111100100001 The Borg 10 8 1.0 1164 402 462 45.6% 1785 80.0% 80.0% 6.9% 01110001110000101101 The Borg 10 7 1.0 1180 407 453 46.3% 2112 70.0% 58.5% 6.0% 11110100010001000010 The Borg 10 7 1.0 1414 444 422 45.2% 1988 70.0% 56.2% 6.0% Det er denne sting som jeg skal tokenize. For hver string skal jeg oprettet et objetkt som har get'er og set'er
27. november 2003 - 23:42
#14
Jeg er for hver linie kun interesseret i pos 1 og de sidste 3. 00110010111000000000 100.0% 88.6% 8.6% 01111111110110100100 90.0% 74.4% 7.7% 11111010111100100001 80.0% 80.0% 6.9% osv..
28. november 2003 - 07:46
#15
Så vil jeg nok tilbage til StringTokenizer se: import java.util.StringTokenizer; public class FirstAndLast { public static void parse(String data) { StringTokenizer st = new StringTokenizer(data, "\n"); while(st.hasMoreTokens()) { String line = st.nextToken(); String[] words = line.split("[ ]+"); System.out.println(words[0] + " " + words[words.length-3] + " " + words[words.length-2] + " " + words[words.length-1]); } } public static void main(String[] args) { String data = "00110010111000000000 The Borg 10 10 1.0 954 327 439 44.5% 1969 100.0% 88.6% 8.6%\n" + "01111111110110100100 The Borg 10 9 1.0 1087 354 424 44.4% 2002 90.0% 74.4% 7.7%\n" + "11111010111100100001 The Borg 10 8 1.0 1164 402 462 45.6% 1785 80.0% 80.0% 6.9%"; parse(data); } }
28. november 2003 - 08:29
#16
TUSINDE TAK ARNE, you have saved my day :-). ups jeg har kommet at afvise dit første svar. Men jeg kan da godt oprettet et nyt spørgsmål så du kan få nogle point
Kurser inden for grundlæggende programmering