2

私は Java で作業しています。文字列の一部を取得するために StringTokenizer を使用していますが、問題は、「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 20 ではなく 2 しか表示されません

前もって感謝します

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 に答える