StringTokenizer 未将制表符(“\t”)视为空格(“\\s+”)

StringTokenizer Not Viewing Tab ("\t") as Whitespace ("\\s+")

给定以下形式的字符串:

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[] splitArray = myStr.split("\s+")
String firstElement = splitArray[0];

那么,firstElement 是“5.1”。

我知道不鼓励使用 StringTokenizer,它被归类为 "legacy class"。我在这里的目的是了解为什么相同的定界符在 split 和 StringTokenizer 之间的工作方式不同。我原以为第一个示例会像后两个示例一样工作,但由于某种原因,它跳过了选项卡。任何关于我所缺少的东西的指导将不胜感激。

请注意,我在 Eclipse OSX 上使用 运行 1.7.0_19,但我不希望这些变量在这里产生影响。

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

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

StringTokenizer: 它使用分隔符作为字符串,其中可能包含分隔符列表而不是 regex

拆分: 它使用分隔符作为 regex