研究StringTokenizer及相关

构造方法摘要
         StringTokenizer(String str) 为指定字符串构造一个 string tokenizer。(默认 " \t\n\r\f" 作为分隔符,默认为false)

         StringTokenizer(String str, String delim) 为指定字符串构造一个 string tokenizer。(默认flase)

         StringTokenizer(String str, String delim, boolean returnDelims) 为指定字符串构造一个 string tokenizer。
方法摘要
            int countTokens()          计算在生成异常之前可以调用此 tokenizer 的 nextToken 方法的次数。(nextToken()在nextToken()调用才会变化,)
             boolean hasMoreElements()  返回与 hasMoreTokens 方法相同的值。 (就是调用hasMoreTokens 方法 )

             boolean hasMoreTokens()    测试此 tokenizer 的字符串中是否还有更多的可用标记。

             Object nextElement()  除了其声明返回值是 Object 而不是 String 之外,它返回与 nextToken 方法相同的值。 (调用的nextToken() 方法)
            
               String nextToken()  返回此 string tokenizer 的下一个标记。

                String nextToken(String delim)  返回此 string tokenizer 的字符串中的下一个标记。 ( 如果在new StringTokenizer(str)没有给 delim参数, 那么 nextToken(delim)等于 new StringTokenizer(str,delim),如果new StringTokenizer(str,delim),就会代替 delim。)

             注: 比如
                      String str = "a123a234a345";
                   String str1 = "123a234a345";
                   String str2 = "123a234a345a";
                   StringTokenizer st = new StringTokenizer(str,"a");
                   StringTokenizer st1 = new StringTokenize(str1,"a");
                   StringTokenizer st2 = new StringTokenize(str2,"a");
                   st,st1,st2最后会得到3个字符串,分别是 123 ,234, 345。所以使用该类的时候,在这种情况下需要注意头字符和尾字符。

               注2: String str = "a123b456ab789";
                     StringTokenizer st = new StringTokenizer(str,"ab");
                  按照我以前的思路会得到 a123b456 和 789,但是结果却是 123,456和789.为什么?经过我几个不同字符串的调试,发现 StringTokenizer 会把分割字符串变成char或byte。如"ab".getByte(),一个个去匹配,只要匹配正确,就分割。神坑啊。如果需要到达语气的效果,需要在循环中,处理。感觉,这样太蛋疼。不效率会变笑。不知道那位大牛,能解决下这个问题。
                

你可能感兴趣的:(java)