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
给定以下形式的字符串:
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