当前位置: 首页 > 知识库问答 >
问题:

字符串标记器的奇怪行为

习斌
2023-03-14
    String str="ABC~DEF~GHI~JKL~~MNO";// Input String
     while(stk.hasMoreTokens()){
            obj[i]=stk.nextToken();
            i++;
        }
        for(Object ob:obj){
            System.out.print(ob+"~>");
        }

我使用StringTokenizer将字符串分成标记,但是每当连续分隔符出现在中间而没有任何空格时,StringTokenizer就跳过它并取下一个标记

实际产出

ABC~>DEF~>GHI~>JKL~>MNO~>null~>

想要的Outupt

ABC~>DEF~>GHI~>JKL~>null~>MNO~> // Don't want to skip consecutive tokens

共有1个答案

穆彬郁
2023-03-14

StringTokenizer有一个私有标志(returnDelims),默认为false。上面写着

如果returnDelims标志为true,则分隔符字符也将作为标记返回。每个分隔符作为长度为1的字符串返回。如果标志为false,则跳过分隔符字符,仅用作令牌之间的分隔符。

StringTokenizer有另一个构造函数用于为其设置值。您应该将true传递给returnDelims标志,如下所示

    String str = "ABC~DEF~GHI~JKL~~MNO";// Input String
    final String token = "~";
    StringTokenizer stk = new StringTokenizer(str, token, true);
    Object[] obj = new Object[10];
    int i = 0;
    String lasToken = "";
    while (stk.hasMoreTokens()) {
        String nexToken = stk.nextToken();
        if (!token.equals(nexToken)) {
            obj[i] = nexToken;
            i++;
        } else if (token.equals(lasToken)) {
            i++;
        }
        lasToken = nexToken;
    }
    for (i = 0; i < obj.length; i++) {
        System.out.print(obj[i] + "~>");
    }
 类似资料:
  • 问题内容: 我有一些奇怪的字符串池行为的问题。我正在使用比较相等的字符串来找出它们是否在池中。 输出为: 这对我来说是一个很大的惊喜。有人可以解释一下吗?我认为这是在编译时发生的。但是,为什么添加到String 根本没有任何区别呢? 问题答案: 是一个编译时常量,而 不是。因此,前者仅编译为字符串常量“ 555”,而后者则编译为实际的方法调用和串联,从而生成一个新的String实例。 另请参见JL

  • 问题内容: 我已经将其输入python shell: 我期望0.1 * 0.1不是0.01,因为我知道以10为底的0.1是周期性的,以2为底。 我已经看过20个以上的字符,因此我希望能得到20个。为什么我得到4? 好吧,这解释了为什么我给了我4,但为什么回归? 为什么不回合?(我已经阅读了这个答案,但是我想知道他们如何决定何时对浮点数进行取整,以及何时对不进行浮点取整) 因此,浮子的准确性似乎是一

  • 问题内容: 我有一个小文件,其中包含一些我想用“ |”分割的内容 字符。 当我尝试使用其他任何字符(例如“>”)时,它都可以正常工作,但是使用“ |” 性格,有一些意想不到的结果。 行本身(此处带有 >字符) addere> to add>(1) 分割“ >”结果 [加法,加法(1)] 分割“ |” 结果 [,a,d,d,e,r,e,|,t,o,,a,d,d,|,(,1,)] 为什么要拆分所有内容

  • 问题内容: 如何从字符串中删除奇怪的和不需要的Unicode字符(例如带问号的黑色菱形)? 更新: 请告诉我对应于“其中带有问号的黑色菱形”的Unicode字符串或正则表达式。 问题答案: 带问号的黑色菱形不是unicode字符- 它是字体无法显示的字符的占位符。如果字符串中存在一个字形,而该字形不是用于显示该字符串的字体,则将看到占位符。定义为U + FFFD:它的外观取决于您使用的字体。 您可

  • 我遇到了这样的问题,解决不了。我使用Python的记录器记录信息,记录器级别设置为logging.debug。我同时使用gunicorn记录信息。通常,错误消息会转到Python的记录器,而link消息和由logger.info或logger.debug编写的其他消息会转到gunicorn的日志文件中。然而,对于一个应用程序,它的行为就不是这样了。由logger.info输出的消息也会进入Pyth

  • 问题内容: 我有一个文本文件,其中包含用’|’分隔的数据。我需要获取每个字段(以“ |”分隔)并对其进行处理。文本文件可以显示如下: ABC | DEF || FGHT 我正在使用字符串令牌生成器(JDK 1.4)来获取每个字段值。现在的问题是,我应该在DEF之后得到一个空字符串,但是我没有在DEF和FGHT之间得到空白。 我的结果应该是 -ABC,DEF,“”,FGHT, 但我正在获取 ABC,