浅谈 StringTokenizer 类

浅谈 StringTokenizer 类

文章目录

一、背景介绍二、简述 StringTokenizer 类的3个构造方法三、StringTokenizer 类中的方法

一、背景介绍

最近在编写代码时以及在 牛客、leetcode 上刷题时,有时候会遇到需要对一个字符串进行几部分的截取 这样的需求场景。一般我都是使用 字符串 String 类自带的 split()方法 进行截取字符串,不过由于这个 split()方法 里传入的参数比较特殊,其传入的参数需要是 正则表达式 。譬如说:当前有个字符串 x = “aaa\tbbb\tccc”,我希望以 \t 为分隔符,将 x 截取,分成好几个字符串子串。如果此时使用 split()方法 截取,那么代码书写为如下形式:

public class testSplit {

public static void main(String[] args) {

String x = "aaa\tbbb\tccc";

String[] xs = x.split("\\t");

for (int i = 0; i < xs.length; i++) {

System.out.println(xs[i]);

}

}

}

输出结果: 从上面圈红框的地方,我们可以清楚的看到,split()方法 里的参数,并不是我们所指定的分隔符,是在我们指定的分隔符 \t 的基础上,又加了一个转义字符 \。这是因为 split()方法 里的参数要求必须是 正则表达式,我们所指定的分隔符 \t 在正则表达式中是表达着另一层含义的,是制表符的意思,此时就要加上转义字符,用来与正则表达式中的含义区分开来,此时的 \t 才能够真正生效。

因此使用 split()方法时,需要先对正则表达式有点了解才不至于出错,因此我通过查阅资料,找到了 StringTokenizer 类,该类同样具有与 split() 相同的效果,甚至于功能更加丰富。

二、简述 StringTokenizer 类的3个构造方法

StringTokenizer 类,其起到的作用与 split()方法 几乎一致,都是可以拿来截取字符串的。它可以跟 split() 一样自定义分隔符分割字符串,传入的参数也无需是正则表达式。当 StringTokenizer 没有指定分隔符时,其使用的是Java中默认的分隔符:空格、制表符\t、回车符\r、换页符f。

StringTokenizer 类主要有 3 个 构造方法。

1、StringTokenizer(String str) 此构造方法,其要求传入的参数是一个字符串,然后其分割字符串的方式如下:

StringTokenizer st = new StringTokenizer("aaa bbb ccc");

while(st.hasMoreElements()){

System.out.println(st.nextToken());

}

代码结果: 由于此构造方法只传入了一个字符串,没有指定分隔符,所以此时如果你传入的字符串没带有 Java 中默认的分隔符:空格、制表符\t、回车符\r、换页符\f。那么此时输出的字符串,仍旧是原样。看以下的例子:

public class testStringTokenizer {

public static void main(String[] args) {

StringTokenizer test = new StringTokenizer("aaa*bbb*ccc");

while(test.hasMoreTokens()){

System.out.println(test.nextToken());

}

}

}

输出结果: 2、StringTokenizer(String str,String delim) 此构造方法意为:在传入一个字符串的同时,还指定了分隔符。此时就可以随意指定自己想要作为分隔符的字符了,并且此分隔符无需是 正则表达式。

public static void main(String[] args) {

// 使用构造方法2,指定分隔符为 *

StringTokenizer st = new StringTokenizer("hhh*jjj*lll","*");

while(st.hasMoreTokens()){

System.out.println(st.nextToken());

}

}

运行结果:

3、StringTokenizer(String str,String delim,boolean returnDelims) 此构造方法在构造方法2的基础上,加上了第3个参数,此参数的作用是:当为 true 时,表明分隔符作为一个元素返回,当为 false 时,分隔符不作为元素返回。

public static void main(String[] args) {

// 使用构造方法3,指定分隔符为 *,同时分隔符作为元素返回

StringTokenizer st = new StringTokenizer("hhh*jjj*lll","*",true);

while(st.hasMoreTokens()){

System.out.println(st.nextToken());

}

}

运行结果:

三、StringTokenizer 类中的方法

掌握了 StringTokenizer 类的3种构造方法后,还需要掌握 StringTokenizer 类中的常用方法,共有5个常用方法,这5个常用方法通常会搭配 StringTokenizer 类来使用,实现截取字符串的功能。

1、int countTokens() 此方法用来计算 StringTokenizer 对象中的元素个数

public static void main(String[] args) {

// 使用构造方法2,指定分隔符为 *

StringTokenizer st = new StringTokenizer("hhh*jjj*lll","*");

int count = st.countTokens();

System.out.println(count);

while(st.hasMoreTokens()){

System.out.println(st.nextToken());

}

}

运行结果: 我们指定了字符串的分隔符为 * ,因此此时通过 countTokens()方法 的计算,可知当前的 st 对象中所含元素个数为 3。

2、boolean hasMoreTokens() / boolean hasMoreElements() 这两个方法都是用来判定当前的 StringTokenizer 对象 中是否还有元素可遍历。返回 true 时,说明还有元素可遍历,返回 false 时,说明没有元素可以遍历了,此时就会退出循环。

3、Object nextElement() / boolean nextToken() 这两个方法都是用于返回对象中的一个Token (就相当于返回一个元素)

相关故事

海信40寸电视
任丘36524便利店电话

海信40寸电视

怎么在autocad中插入excel表格
mobile365体育手机版入口

怎么在autocad中插入excel表格

神武幻境寻宝攻略及开箱技巧(活动时间、通关队伍配置及玩法)
mobile365体育手机版入口

神武幻境寻宝攻略及开箱技巧(活动时间、通关队伍配置及玩法)