---
title: "Problem med StreamTokenizer"
type: "forum-thread"
url: "https://www.webforum.nu/amne/java/60156-problem-med-streamtokenizer"
topic: "Java"
topic_url: "https://www.webforum.nu/amne/java"
author: "BABBA"
published: "2002-11-24T20:28:25.000Z"
updated: "2002-11-25T10:42:53.000Z"
replies: 3
views: 235
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/60156-problem-med-streamtokenizer"
---

# Problem med StreamTokenizer

## #1 — BABBA, 2002-11-24T20:28Z

Jag vill parsa en text som innehåller skräptecken och bara plucka ut orden. Min textfil ser ut så här:
\---- test.txt ----
!Three!!?(words"  '133+ 4real!\]
,:words??
\-------------------

Min java-kod:

```
import java.io.*;

public class  Tokenizer  
{
	public static void main(String args[] ) throws Exception
	{
		Reader r = new BufferedReader(new FileReader("test.txt"));

		StreamTokenizer parser = new StreamTokenizer(r);
		
		parser.lowerCaseMode(true);

		parser.eolIsSignificant(true);	
	
		while ( parser.nextToken() != StreamTokenizer.TT_EOF )
		{
			if ( parser.ttype == StreamTokenizer.TT_WORD)
				System.out.println(parser.sval +" "+ parser.ttype);
		} 
	}
}
```

Det som skrivs ut är:
three
words
words

alltså inte "real". Varför inte då?? Jag behöver verkligen hjälp med det här! Tack på förhand!

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

## #2 — sgtpepper, 2002-11-24T20:51Z

Problemet är att StreamTokenizern kommer att tolka 133+ 4real!\] som en sträng, antar jag, eftersom denna ordföljd börjar med en ".

En lösning som funkar är att tala om för Tokenizern att ' och " skall tolkas som vanliga tecken med ordinaryChar()-metoden, lägg till det före while-loopen:

```
	parser.ordinaryChar('\'');
	parser.ordinaryChar('\"');
```

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

## #3 — BABBA, 2002-11-24T22:24Z

Tack sgtpepper! Kunglig lösning...

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

## #4 — sgtpepper, 2002-11-25T10:42Z

Varsågod :).

Jag ser att wF plockade bort backslash:en från första ordinaryChar()-metoden för enkelfnutt, fast det har du väl antagligen redan fixat, men hursomhelst så måste även enkelfnutt "escape:as":

```
parser.ordinaryChar('[b]\[/b]'');
```

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

---

Tråden på webben: https://www.webforum.nu/amne/java/60156-problem-med-streamtokenizer
