---
title: "Sträng-sprängare"
type: "forum-thread"
url: "https://www.webforum.nu/amne/java/28260-sträng-sprängare"
topic: "Java"
topic_url: "https://www.webforum.nu/amne/java"
author: "SPiN"
published: "2001-04-14T18:26:00.000Z"
updated: "2001-04-16T12:02:00.000Z"
replies: 5
views: 546
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/java/28260-sträng-sprängare"
---

# Sträng-sprängare

## #1 — SPiN, 2001-04-14T18:26Z

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å?

Permalänk: https://www.webforum.nu/p/28260

## #2 — sgtpepper, 2001-04-15T14:05Z

Kolla in [StringTokenizer](http://java.sun.com/j2se/1.3/docs/api/java/util/StringTokenizer.html)\-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());
     }

Permalänk: https://www.webforum.nu/p/401811

## #3 — SPiN, 2001-04-15T17:35Z

Okey, tack för tipset!

Men jag vill juh verkligen ha min egen funktion ;)

Du ser inget direkt fel i min kod?

Permalänk: https://www.webforum.nu/p/401812

## #4 — SPiN, 2001-04-15T20:02Z

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())...

Permalänk: https://www.webforum.nu/p/401813

## #5 — spango, 2001-04-15T23:34Z

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 ;)

Permalänk: https://www.webforum.nu/p/401814

## #6 — SPiN, 2001-04-16T12:02Z

Härligt!

Tack tack :)

Permalänk: https://www.webforum.nu/p/401815

---

Tråden på webben: https://www.webforum.nu/amne/java/28260-sträng-sprängare
