StringTokenizer在数字末尾不显示0

asm*_*mae 2 java stringtokenizer

我正在使用Java,我正在使用StringTokenizer来获取我的String的一部分,但问题是当我使用"StringTokenizer"时,我的结果的一部分没有出现这是我的java代码:

for(String iopp:opp){
                   StringTokenizer tokenizer = new StringTokenizer(iopp,"form:blocConfigurations:configurations:0:parametrage:options:");
                   while(tokenizer.hasMoreTokens()){
                   ind.add(tokenizer.nextToken());

                   }
               }   

               logger.info("Mes indices sont :"+ind); 
Run Code Online (Sandbox Code Playgroud)

在我的控制台中:

   what was it :[form:blocConfigurations:configurations:0:parametrage:options:1,            form:blocConfigurations:configurations:0:parametrage:options:6, form:blocConfigurations:configurations:0:parametrage:options:9, form:blocConfigurations:configurations:0:parametrage:options:17, form:blocConfigurations:configurations:0:parametrage:options:20, form:blocConfigurations:configurations:0:parametrage:options:21, form:blocConfigurations:configurations:0:parametrage:options:22]
   17:13:45,876 INFO  [com.sfr.price.functionalTest.scenario.impl.AJLINGE.etapeParametrerOption](821) [] Mes indices sont :[1, 6, 9, 17, 2, 21, 22]
Run Code Online (Sandbox Code Playgroud)

StringToknizer工作得非常好,但我不明白为什么在这个元素形式:blocConfigurations:configurations:0:parametrage:options:20它只显示2而不是20

提前致谢

Nik*_*zov 8

阅读javadoc:StringTokenizer.
每个角色form:blocConfigurations:configurations:0:parametrage:options:都是天文位.0也是这个字符串包含的分隔符0. StringTokenizer不适合这项任务的工具.您可以尝试String.split:

String[] tokens = iopp.split("form:blocConfigurations:configurations:0:parametrage:options:");
Run Code Online (Sandbox Code Playgroud)

但要小心,因为split正则表达式作为delimeneter.如果您的分隔符字符串中有一些特殊字符,则需要将其转义.