SPiNMedlem sedan mars 20007 896 inlägg Hej!
Jag försöker få till en explode-funktion, som splittar en sträng in till en array. Men det funkar ju inte... Får ett NullPointerException när jag försöker använda funktionen.
Idéer välkomnas varmt :)
private static String[] explode(String txt, char chr) {
String[] returnArr = null;
String returnStr = null;
int input = 0;
for(int cnt = 0; cnt < txt.length(); cnt++) {
if(txt.charAt(cnt) == chr) {
returnArr[input] = returnStr;
returnStr = null;
input++;
}
else
returnStr = returnStr + txt.charAt(cnt);
}
if(returnArr != null)
return returnArr;
else {
returnArr[0] = txt;
return returnArr;
}
}
Kanske finns enklare sätt än det jag försöker mig på?
------------------
SPiN, bjorne.w@telia.com
-- §e Grr... --
[Redigerat av SPiN den 14 apr 2001]
Kolla in StringTokenizer-klassen. Den splittar en sträng med valbart tecken, sen plockar du ut delsträngarna likt detta:
<font size="1" face="Verdana, Arial, Helvetica, sans-serif">Kod:<font size="1" face="Verdana, Arial, Helvetica, sans-serif" color="#666600"> StringTokenizer st = new StringTokenizer("denna sträng splittas vid mellanslag", " ");
while (st.hasMoreTokens()) {
println(st.nextToken());
}
------------------
"Med ett schysst järnrör slår man hela världen med häpnad" - Socker-Conny
SPiNMedlem sedan mars 20007 896 inlägg Okey, tack för tipset!
Men jag vill juh verkligen ha min egen funktion ;)
Du ser inget direkt fel i min kod?
------------------
SPiN, bjorne.w@telia.com
-- §e Grr... --
[Redigerat av SPiN den 15 apr 2001]
SPiNMedlem sedan mars 20007 896 inlägg Jag vill alltså ha en funktion som returnerar en array med olika index, alltså array[0], array[1], osv.
Tänkte att man kunde blanda in StringTokenizer i en funktion, och fick fram följande. Men men... Den funkar ju inte :(
public static String[] explode(String txt, String chr) {
String[] returnArr;
StringTokenizer expl;
int chars = 0;
int done = 0;
for(int i = 0; i < txt.length(); i++)
if(txt.charAt(i) == chr.charAt(0))
chars++;
returnArr = new String[chars++];
expl = new StringTokenizer(txt, chr);
while(expl.hasMoreTokens()) {
returnArr[done] = expl.nextToken();
done++;
}
return returnArr;
}
ArrayIndexOutOfBoundsException får jag när jag kör min fil, men ingenting vid kompileringen...
Det blir fel på raden returnArr[done] = expl.nextToken(); i loopen while(expl.hasMoreTokens())...
------------------
SPiN, bjorne.w@telia.com
-- §e Grr... --
[Redigerat av SPiN den 15 apr 2001]
spangoMedlem sedan juni 20008 205 inlägg Så här kan man göra:
public String[] explode(String str, char ch){
StringTokenizer st = new StringTokenizer(str, ch+"");
String[] result = new String[st.countTokens()];
int i = 0;
while(st.hasMoreTokens())
result[i++] = st.nextToken();
return result;
}
Härligt nerkortad och trixig ;)
------------------
Life feeds on life feeds on life feeds on life feeds on life...
SPiNMedlem sedan mars 20007 896 inlägg Härligt!
Tack tack :)
------------------
SPiN, bjorne.w@telia.com
-- §e Grr... --
[Redigerat av SPiN den 16 apr 2001]