0

大家好,我正在使用包含的流标记器解析文本文件

Z

Z(ze;在英国通常,有时在美国,zêd;以前,也是,îz"zêrd)

定义:Z,英文字母表的第 26 个也是最后一个字母,是一个声母。它取自来自希腊字母表的拉丁字母 Z,它来自闪米特语源。最终的起源可能是埃及。在词源上,它与 s、y 和 j 关系最密切;如玻璃、釉料;E.轭,Gr。尤古姆;E. 热心的,嫉妒的。参见发音指南,§§ 273, 274。

我的代码

 public int[] getlineno(){
 try {
            BufferedReader in = new BufferedReader(new FileReader(url));
            StreamTokenizer st = new StreamTokenizer(in);
            st.eolIsSignificant(true);
            Vector v=new Vector();
            st.commentChar('#');
            scan:
            while (true) {
                switch (st.nextToken()) {
                    case StreamTokenizer.TT_EOF:
                        break scan;

                    case StreamTokenizer.TT_WORD:
                        break;

                    case StreamTokenizer.TT_NUMBER:
                        break;

                    default:
                        if(st.sval==null){
                        System.out.println(i+" "+st.sval);
                        v.add(st.lineno());
                        }break;

                }
            }
            int linesno[]=new int[v.size()];
            for(int i=0;i<v.size();i++){
                int line=Integer.parseInt(v.get(i).toString());
                linesno[i]=line;
            }
            return linesno;
        } catch (Exception ex) {
            return null;
        }

}

请帮助我使用 streamtokenizer.class 检测空行

4

1 回答 1

1

有一种形式的 StringTokenizer 构造函数,它接受字符串、分隔符列表和一个布尔值,该布尔值指示分隔符是否应作为标记返回。如果您使用这种形式的构造函数,nextToken() 方法将按照正确的顺序将换行符(假设它是您的分隔符之一)与其他标记一起返回给您的代码。您必须添加逻辑来确定哪些标记是分隔符,哪些是“真实”标记。

于 2013-07-26T05:31:44.760 回答