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!
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:
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]'');
258 ms totalt · 4 externa anrop · v20260731065814-full.5386d3bf