Tokenizer java(string)

时间:2017-02-02 11:36:16

标签: java stringtokenizer

例如,我ve got Some string a.b.c.d`,我用令牌分隔它。但是现在我想用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 

3 个答案:

答案 0 :(得分:3)

只是说明@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()

答案 1 :(得分:1)

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

这样会打印每个标记的内容如何:

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

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

答案 2 :(得分:0)

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