14. maj 2004 - 22:55Der er
10 kommentarer og 1 løsning
J2ME spørgsmål, ang en lang streng
Hej, jeg er igang med at lave et program i j2me, hvor jeg skal have oplysninger ud fra en servlet, sender fint osv, problemet er bare at jeg får det hele tilbage i EN lang streng, og kender kun stringToKenizer som kan opdele den, men den understøtter j2me jo ikke... Så ville spørger om der er nogen der vidste hvordan man fik delt sådan en streng op, og samtidig overholder j2me's standard?
Det havde været let men den findes ikke i min JDK version. Nu kommer det også lidt an på hvad du skal lave - er det HTML output eller er det evt. din egen opfundne miniprotocol?
Anyway:
Kig nærmere på IndexOf, som fsconsult.dk antyder. Herefter kan du benytte substring til at cutte stringen op med, hvor du angiver start og slutindex. Jeg er ikke erfaren i Java, men substring drillede mig lidt, da substring tager tegnet på startindex med, men ikke slutindex, bare så du er opmærksom.
Hvis det kan hjælpe dig er der andre praktisk funktioner fx: startsWith og endsWith, hvor du hurtigt kan teste indholdet, som du får fra din servlet, hvis det er nogenlunde statisk altså.
Ok har roddet lidt med det nu, den der split metode virker ikke... Men ved ikke lige hvordan jeg bruger den der indexOf, så kan i ikke lige skrive noget kode omkring hvordan jeg skal bruge den?
String s = "Dette er en String til \"test\"."; int ix1 = s.indexOf('"'); int ix2 = s.indexOf('"', ix1 + 1); String del = s.substring(ix1 + 1, ix2); System.out.println(del);
lidt mere komplekst eksempel:
public class Parse1 { public static void main(String[] args) { process("(name=id,type=string),(name=age,type=integer)"); } private final static String NAME = "name="; private final static String TYPE = "type="; public static void process(String s) { int ix = 0; while (ix < s.length()) { int ixname = s.indexOf(NAME, ix); if (ixname <= 0) ixname = s.length(); int ixtype = s.indexOf(TYPE, ix); if (ixtype <= 0) ixtype = s.length(); if (ixname < ixtype) { int ixend = s.indexOf(",", ixname); String name = s.substring(ixname + NAME.length(), ixend); System.out.println("name: " + name); ix = ixend; } else if (ixtype < ixname) { int ixend = s.indexOf(")", ixtype); String name = s.substring(ixtype + TYPE.length(), ixend); System.out.println("type: " + name); ix = ixend; } else { ix = s.length(); } } } }
Sad og rodede med det idag, og synes den var lidt underlig da jeg skulle have flere ind, dvs 8 attributter der skulles sættes. Så er ikke kommet så meget videre, sorry jeg først skriver nu, har haft lidt travlt...
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.