2

i'm working with Java ,i'm using a StringTokenizer in order to have a part of my String but the problem is when i'm using "StringTokenizer" a part of my result doesn't appear this is my java code :

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); 

and in my console :

   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 works exacltly but i don't understand why in this element form:blocConfigurations:configurations:0:parametrage:options:20 it shows me only 2 and not 20

thanks in advance

asmae
  • 31
  • 1
  • 1
  • 6
  • As per comment in source, StringTokenizer is a legacy class that is retained for * compatibility reasons although its use is discouraged in new code. It is * recommended that anyone seeking this functionality use the split * method of String or the java.util.regex package instead – kosa Jul 30 '12 at 15:58

2 Answers2

8

Read javadoc: StringTokenizer.
Every character in form:blocConfigurations:configurations:0:parametrage:options: is delimeter. 0 is also delimeter as this string contains 0. StringTokenizer is not right tool for this task. You can try with String.split:

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

But be careful because split takes regex as delimeneter. And if you have some special characters in your delimeter string, you need escape it.

Mikita Belahlazau
  • 15,326
  • 2
  • 38
  • 43
  • when i use split it returned something like this : Mes indices sont : [] Mes indices sont :1 [] Mes indices sont : [] Mes indices sont :6 [] Mes indices sont : [] Mes indices sont :9 [] Mes indices sont : [] Mes indices sont :17 [] Mes indices sont : [] Mes indices sont :20 [] Mes indices sont : [] Mes indices sont :21 [] Mes indices sont : [] Mes indices sont :22 – asmae Jul 31 '12 at 08:44
  • @asmae you can remove all empty strings from array – Mikita Belahlazau Jul 31 '12 at 09:16
0

Every character of delim in new StringTokenizer(str,delim) is treated as separate delimiter.

You should consider to use String.indexOf(String str, int fromIndex)

Arvik
  • 2,524
  • 2
  • 15
  • 10