java中的字符串标记生成器 - 重新初始化

时间:2012-12-08 04:38:35

标签: java filereader stringtokenizer

我有一个程序可以搜索给定列表中的单词(按字母顺序排列)。事实上,我输入“abc”和“def”,然后输入“abcd”。

它将搜索“abc” - 打印它,现在字符串标记器将继续在“abc”之后从标记中搜索“def”,因此显然找到了“def”。问题是我希望“abcd”找到第三个,并且“def”之后的列表中不存在“abcd”,这是令牌化器将继续的地方。

如何重置String Tokenizer的nextToken()函数?或者更确切地说,如何让tokenizer函数从文件的最开头读取每次比较?

[编辑]

我知道我可以打开和关闭文件。我想知道是否有任何方法只使用字符串标记符。我用谷歌搜索了一下。到目前为止没有结果。

[CODE] 的 这是关于tokenizer的代码,它在一个单独的函数中被调用,每次传递一个新的字符串。

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

1 个答案:

答案 0 :(得分:0)

Apache Commons Langorg.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.