我正在使用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:配置:0:parametrage:选择:20 它只显示2而不是20
提前致谢
答案 0 :(得分: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
将正则表达式视为delimene。如果您的分隔符字符串中有一些特殊字符,则需要将其转义。
答案 1 :(得分:0)
new StringTokenizer(str,delim)中每个delim字符都被视为单独的分隔符。