java核心技术第一册中关于流那一章里演示了四个例子,其中一个就是利用“|”做为分隔符来读取和写入字符串的操作。
我前两天刚学的流,还有一点印像,但是水平有限也回答不上楼主的问题。
同时借道问一下,明明“\t\n\r”是表示三个字符,为什么会是四个字符。我的认为是\t表示制表,\n表示回车,\r是什么就不知道了,那还有一个呢?
还有,即然StringTokenizer默认是使用“\t\n\r”,那当要查找分隔符的时候,这几个默认的分隔符是与的关系(即每一个都要求有才算有)还是或的关系(只要有其中一个就行了呢)?

解决方案 »

  1.   

    用jdk1.4提供的split方法吧,用正则表达式来表示字符串
      

  2.   

    <<
    \n表示回车,\r是什么就不知道了
    >>错了,\n不是回车,\r才是
    \n = newline 换行
    \r = return 回车
      

  3.   

    我在这里有一篇关于 StringTokenizer 的示例文章:
    http://www3.ccw.com.cn/club/bbs/showEssence.asp?id=18867
      

  4.   

    对了,另外说一下,StringTokenizer处理\t\r\n是没有任何问题的。<<
            String src = "abc\t\r\n123";        List result = new ArrayList();
            for( StringTokenizer st=new StringTokenizer(src, "\t\r\n"); st.hasMoreTokens(); ) {
                result.add(st.nextToken());
            }
            assertEquals(2, result.size());
            assertEquals("abc", result.get(0));
            assertEquals("123", result.get(1));
    >>
      

  5.   

    默认的分隔符是四个:空格,\t制表符、\r换行符和\n回车。 
    它们是或的关系,只要发现任何一个分隔符,就分割一次。
      

  6.   

    split 方法是按一定的分隔符把字符串分隔成 Sting[] 的

        public static void main(String[] args) {
            String s = "aaaa,bbbb.cccc;,dddd";
            String[] sa = s.split("[,.;]");
            for (int i = 0; i < sa.length; ++i) {
                System.out.println(sa[i]);
            }
        }注意,分隔符参数是用正则表达式表示的
      

  7.   

    上述代码的输出结果是:
    aaaa
    bbbb
    ccccdddd如果对 ;, 的分隔,不需要那个空串,可以修改正则表达式为
    [,.;]{1,}