StringTokenizer未查看选项卡(" \ t")为空格(" \\ s +")

时间:2015-09-14 05:23:19

标签: java split stringtokenizer

给出以下形式的字符串:

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,但我不希望这些变量在这里产生影响。

1 个答案:

答案 0 :(得分:4)

StringTokenizer不使用正则表达式作为分隔符。该参数是一个包含分隔符字符列表的字符串。

构造函数StringTokenizer(String)StringTokenizer(String, "\t\n\f\r")相同,因此它适用于您的字符串。