给出以下形式的字符串:
String myStr = "5.1\t3.5\t1.4\t0.2\t0.0";
如果我打电话:
StringTokenizer token = new StringTokenizer(myStr, "\\s+");
String firstElement = token.nextToken();
然后firstElement等于整个字符串。相反,如果我打电话:
StringTokenizer token2 = new StringTokenizer(myStr);
String firstElement = token2.nextToken();
firstElement等于" 5.1"。同样,如果我使用String split如下所示:
String[] splitArray = myStr.split("\\s+")
String firstElement = splitArray[0];
然后,firstElement是" 5.1"。
我理解不鼓励StringTokenizer使用,并且被归类为"遗留类"。我的目的是理解为什么相同的分隔符在split和StringTokenizer之间的工作方式不同。我本来期望第一个例子像后两个一样工作,但由于某种原因,它正在跳过标签。我非常感谢您对我所缺少的任何指导。
注意我在Eclipse上的OSX上运行1.7.0_19,但我不希望这些变量在这里产生影响。
答案 0 :(得分:4)
StringTokenizer
不使用正则表达式作为分隔符。该参数是一个包含分隔符字符列表的字符串。
构造函数StringTokenizer(String)
与StringTokenizer(String, "\t\n\f\r")
相同,因此它适用于您的字符串。