【问题标题】:Tokenizer java (string)标记器java(字符串)
【发布时间】:2017-02-02 11:36:16
【问题描述】:

比如Ive got Some stringa.b.c.d`,我已经用token分隔了。但是现在我想用 a 做一件特定的事情,然后用 b 做一些别的事情,然后用 c 做一些别的事情。我该怎么做?

String value="a.b.c.d";
StringTokenizer tokenize = new StringTokenizer(value, ".");
while(tokenize.hasMoreTokens()){
    String separated1= tokenize.?????;  
    String separated2= tokenize.?????;                            
    String Val1 = someMethod1(separated1); 
    String Val2 = someMethod2(separated2); 
}
//tokenize next line is not solution 

【问题讨论】:

  • 为什么不使用 String.split()? StringTokenizer 是一个遗留类。
  • 非常感谢,我会尝试使用 String.split()
  • 它并没有解决我的问题,我只能选择我想“打印出来”的几个,但我仍然无法选择。
  • 没有法律规定必须使用循环。您可以一个接一个地使用几个if 语句来检查是否还有一个令牌并获取下一个令牌并对其进行处理。
  • 感谢@RealSkeptic,

标签: java stringtokenizer


【解决方案1】:

只是为了说明@RealSkeptic 已经说过的话,避免循环:

    String value = "a.b.c.d";
    String[] separated = value.split("\\.");
    if (separated.length >= 2) {
        String val1 = someMethod1(separated[0]); 
        String val2 = someMethod2(separated[1]); 
    } else {
        // other processing here
    }

如果你愿意,你可以用StringTokenizer 做类似的事情,只是你需要至少两个 if 语句来检查是否有足够的令牌。但正如@user3437460 所说,StringTokenizer 现在是旧版; String.split() 建议在新代码中使用。

【讨论】:

    【解决方案2】:

    使用String.split,您可以将. 拆分为一个数组。

    像这样打印每个令牌的东西怎么样:

            String value = "a.b.c.d";
            String[] tokens = value.split("\\.");
            for (String token : tokens) {
                System.out.println(token);
            }
    

    . 需要转义,因为split 函数采用正则表达式,. 是通配符

    【讨论】:

      【解决方案3】:

      为什么不使用 split ?在这里更容易使用,更有意义

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多