我想使用StreamTokenizer从java文件中提取名称。我将空格设置为逗号
inputTokenizer.whitespaceChars(',', ',');
但是,当我解析inputfile的名称(firstname姓氏,中间有空格)时,tokenizer会将firstname视为一个标记,将lastname视为另一个标记。我希望他们两个都被视为同一个标记,我该怎么做?
例如“Billy Jean”被视为两个独立的令牌(Billy - token1 Jean - token2),我希望它被视为一个。
由于
答案 0 :(得分:2)
你的问题是(显然)空格默认被视为分隔符(不足为奇);您将逗号设置为空白字符,因此逗号和空格都被视为空白字符。以下程序做我认为你想要的;请注意将空格设置为“wordChars”的行。
import java.io.IOException;
import java.io.StreamTokenizer;
import java.io.StringReader;
public class TokenTeaser
{
public static void main(String[] args)
{
try
{
String testString = "one two, three, four five";
StringReader sr = new StringReader(testString);
StreamTokenizer st = new StreamTokenizer(sr);
st.whitespaceChars(',', ',');
st.wordChars(' ', ' ');
int currentToken = st.nextToken();
while (currentToken != StreamTokenizer.TT_EOF)
{
System.out.println(st.sval);
currentToken = st.nextToken();
}
}
catch (IOException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}