我有一个程序,可以搜索给定列表中的单词(按字母顺序排列)。事情就是说,我输入了"abc"one_answers"def",然后输入了"abcd"。
它将搜索"abc"-打印它,现在字符串标记化器将继续从"abc"之后的标记中搜索"def",所以很明显找到了"def"。问题是,我希望"abcd"位于第三位,而"def"之后的列表中不存在"abcd",这是标记化器将继续使用的位置。
如何重置字符串标记器的nextToken()函数?或者更确切地说,我如何让标记化器函数从文件的一开始就读取每个比较?
[编辑]
我知道我可以打开和关闭文件。我想知道是否有任何方法可以只使用字符串标记器。我在谷歌上搜索了不少。到目前为止没有结果。
[CODE]这是一个单独的函数中与标记器及其相关的代码,该函数被调用,每次都会传递一个新字符串。
while(sTok.hasMoreTokens()&&f!=0)
{
String m=sTok.nextToken();
//System.out.println(m);
match=false;
if(input.length()==m.length())
{
//System.out.println(input+" is being compared to "+m);
for(int i=0;i<m.length();i++)
{
for(int z=0;z<m.length();z++)
{
//System.out.println("char in m="+m.charAt(i)+" char in input="+a[z]);
if(m.charAt(i)==a[z])
{
match=true;
z=m.length();
}
else
match=false;
}
if(match==false)
i=m.length();
}
}
if(match==true)
{
//System.out.println(m);
toWrite=toWrite+m+",";
fr.close();
return;
}
}
Apache Commons Lang的org.Apache.Commons.Lang.text.StrTokenizer类可能会对您有所帮助。它提供了一种获取上一个令牌的方法以及几种不同的reset()方法:
StrTokenizer reset() // Resets this tokenizer, forgetting all parsing and iteration already completed.
StrTokenizer reset(char[] input) // Reset this tokenizer, giving it a new input string to parse.
StrTokenizer reset(String input) // Reset this tokenizer, giving it a new input string to parse.