【问题标题】:StringTokenizer Not Viewing Tab ("\t") as Whitespace ("\\s+")StringTokenizer 未将制表符 ("\t") 视为空格 ("\\s+")
【发布时间】:2015-09-14 05:23:18
【问题描述】:

给定一个字符串,格式为:

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,它被归类为“遗留类”。我的目的是了解为什么相同的分隔符在 split 和 StringTokenizer 之间的工作方式不同。我本来希望第一个示例像后两个示例一样工作,但由于某种原因,它正在跳过选项卡。任何关于我所缺少的指导将不胜感激。

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

【问题讨论】:

    标签: java split stringtokenizer


    【解决方案1】:

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

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

    【讨论】:

    【解决方案2】:

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

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

    【讨论】:

    猜你喜欢
    • 2021-05-14
    • 2014-06-18
    • 2012-10-17
    • 1970-01-01
    • 2020-01-24
    • 1970-01-01
    • 2016-11-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多