StringTokenizer的使用

发布时间:2023-05-18

一、从StringTokenizer的用法计算账单

我们可以使用StringTokenizer来计算账单。假设我们有以下结账单:

String bill = "面包,10,3|饼干,5,2|牛奶,20,1";

我们想要计算总共的花费。首先,我们需要将字符串按照"|"拆分为每一项,使用StringTokenizer的构造函数实现:

StringTokenizer st = new StringTokenizer(bill, "|");

然后,我们可以使用循环和StringTokenizer的nextToken()方法逐一获取每一项,并按照","拆分为商品名称、价格和数量。最后,我们将每项花费累加起来即可:

double totalCost = 0.0;
while (st.hasMoreTokens()) {
    String item = st.nextToken();
    StringTokenizer itemSt = new StringTokenizer(item, ",");
    String itemName = itemSt.nextToken();
    double itemPrice = Double.parseDouble(itemSt.nextToken());
    int itemCount = Integer.parseInt(itemSt.nextToken());
    totalCost += itemPrice * itemCount;
}
System.out.println("总共花费:" + totalCost);

二、StringTokenizer split

除了使用StringTokenizer的构造函数拆分字符串外,我们还可以使用String类的split方法。但是需要注意,StringTokenizer在拆分时会将分隔符消耗掉,而split方法不会。 举个例子:

String example = "apple,banana,orange";
String[] array = example.split(",");
System.out.println(Arrays.toString(array)); // ["apple", "banana", "orange"]
StringTokenizer st = new StringTokenizer(example, ",");
while (st.hasMoreTokens()) {
    System.out.println(st.nextToken()); // "apple", "banana", "orange"
}

可以看到,array和使用StringTokenizer得到的结果是相同的,但是在使用StringTokenizer时分隔符","被消耗掉了。

三、StringTokenizer类

StringTokenizer类是Java中用于拆分字符串的类,其常用的构造函数有两种:

  • StringTokenizer(String str, String delim):按照指定的分隔符拆分字符串。
  • StringTokenizer(String str, String delim, boolean returnDelims):按照指定的分隔符拆分字符串,如果returnDelims参数为true,则分隔符也会作为Token返回。 除此之外,StringTokenizer类还有许多方法,包括:
  • hasMoreTokens():判断是否还有Token未被获取。
  • nextToken():获取下一个Token。
  • countTokens():获取剩余未被获取的Token数量。

四、StringTokenizer在哪个包

StringTokenizer类位于java.util包中。

五、String和StringTokenizer的区别

String和StringTokenizer都是Java用于处理字符串的类,它们的不同点在于:

  • String:String是不可变对象,一旦创建String对象,其值就不能被改变。使用String类的方法可以操作字符串。
  • StringTokenizer:StringTokenizer是可变对象,可以在遍历字符串的途中改变其状态,比如增加或删除Token。使用StringTokenizer类的方法可以遍历和操作Token。