Avatar billede jamez Nybegynder
03. oktober 2003 - 10:52 Der er 8 kommentarer og
3 løsninger

oprette arrays fra streng

Hej Eksperter

Jeg skal oprette et array for hvert ord in en streng adskilt af ",". Antallet af ord i strengen kan variere...

Er det muligt?
Avatar billede di8leva Nybegynder
03. oktober 2003 - 10:59 #1
StringTokenizer st = new StringTokenizer(string, ",");
        String[] arr = new String[st.countTokens()];
        int i = 0;
        while(st.hasMoreTokens())
        {
            arr[i] = st.nextToken();
            i++;
        }
Avatar billede gybel Nybegynder
03. oktober 2003 - 11:02 #2
Ja det er det da..

Jeg vil ikke skrive en direkte løsning til dig her, fordi det lærer du intet af udover at skrive af, derfor skal du selv tænke lidt. ;o)

Jeg antager at du får en streng med x antal ord adskilt af , og så vil sætte hvert ord ind på en plads i et array.


Du kan enten lave det med et array (statisk længde) eller med en List (dynamisk længde)
Jeg antager at du vil have et array som du skriver..

først finder du antal kommaer og ligger 1 til, det er det antal ord som strengen indeholder.

Herefter er det blot at oprette et array med det antal du har fundet:

String[] str = new String[antal];

Herefter skal du klippe i strengen dette kan gøres med en StringTokenizer
og de forskellige tokens sættes ind i array'et..
Avatar billede erikjacobsen Ekspert
03. oktober 2003 - 11:33 #3
I Java 1.4 og frem er det meget nemt:

import java.util.regex.*;

public class Split {

  public static void main(String[] arg) {

    String s = "a,b,c,d";

    Pattern p = Pattern.compile(",");
    String[] a = p.split(s);

    for (int i=0;i<a.length;i++) {
      System.out.println(a[i]);
    }
  }
}
Avatar billede jamez Nybegynder
03. oktober 2003 - 11:37 #4
tak for svarne, jeg var måske lidt uklar, jeg kan sagtens lave et array beående af elementer fra en string...
Det jeg efterlyser er et array PER ord i strengen adskilt af ",". Umiddelbart lyder det umuligt da det ville kræve String[] strXXXX = new String[i].

Lidt dybere forklaring af det jeg vil opnå:
hvert ord i strengen er en collonne i en tabel som jeg så vil query og få resultatet ud i et array per ord.

Jeg tænker videre, alle input er velkomne.
Avatar billede erikjacobsen Ekspert
03. oktober 2003 - 11:41 #5
Mit eksempel virker fint med

String s = "peter,sad,på,en,knold,og,sang";

...ellers kan jeg ikke forstå hvad du mener.
Avatar billede di8leva Nybegynder
03. oktober 2003 - 11:45 #6
jamez >>

hvis du prøver mit svar så ser du at det er precis hvad du vil ha
Avatar billede jamez Nybegynder
03. oktober 2003 - 12:18 #7
et array per ord er ikke lig et array element per ord, jeg blander måske udtryk sammen her er en ny beskrivelse.

fx:
String s = "first,last"

skal give 2 arrays:
String[] arrFirst = new String[i]
OG
String arrLast = new String[i]

"i" får jeg fra ColumnCount() når jeg har udfært min SQL kollonne first og last

derefter vil jeg indsætte alle rows fra SQL på kollonne "first" i arrFirst ligeledes med "last".

Det vigtige er ikke SQL men hvordan jeg opretter et seperat array per ord :/ uden at vide det endelige antal ord.
Avatar billede jamez Nybegynder
03. oktober 2003 - 12:30 #8
erh "i" er lig antal rows ikke collumns
Avatar billede erikjacobsen Ekspert
03. oktober 2003 - 13:16 #9
Du skal lade være med at acceptere førend du er tilfreds med svarene. Jeg var
ligeved at springe over, da jeg så det.

Men lad os nu se. Du kan jo sagtens få størrelsen af hvert af dine arrays, ved at
spørge om antallet af rækker i resultatet inden du løber dem igennem.

Hvorfor vil du gerne have noget så upraktisk som et array pr. felt?
Det vil være mere fornuftigt at få et array, med størrelse der svarer til
antal rækker, og hvert element heri er et array eller et objekt svarende til
rækken.
Avatar billede jamez Nybegynder
03. oktober 2003 - 14:28 #10
svarene som ikke hjalp tvang mig til at tænke en ny løsning :)

jeg har nu ET enkelt array med ord fra streng og en rset SQL på hele tabellen som ordene indgår som kolonner i.

for hver rset.next() tjekker jeg om de enkelte kollonner matcher et af ordene i array, hvis ja så napper jeg værdien i recordset for den kollonne, og det var den jeg skulle bruge...

Det virker ikke helt endu men det kommer det til kan jeg mærke, det med at dynamisk generere arrays er enten umiligt eller for upraktisk.

Tak alle sammen.
Avatar billede erikjacobsen Ekspert
03. oktober 2003 - 14:35 #11
Det er jo bl.a derfor man har ArrayList og HashTable
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester