2

我正在使用 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); 

在我的控制台中:

   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]

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

提前致谢

4

2 回答 2

8

阅读 javadoc: StringTokenizer
中的每个字符form:blocConfigurations:configurations:0:parametrage:options:都是分隔符。0也是分隔符,因为此字符串包含0. StringTokenizer不是此任务的正确工具。您可以尝试String.split

String[] tokens = iopp.split("form:blocConfigurations:configurations:0:parametrage:options:");

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

于 2012-07-30T15:56:09.243 回答
0

new StringTokenizer(str,delim)中的每个 delim 字符 都被视为单独的分隔符。

您应该考虑使用String.indexOf(String str, int fromIndex)

于 2012-07-30T16:06:09.337 回答