I don't think substring is a "good" way to do this as if you look at the API for String, there isn't a substring method that takes parameters other than indices of characters in the string. But you will still need substring!
Assuming you still want to do this in a manner where you dump the array into a string, a more suitable method of the String API would be indexOf(). The parameter is the string you want to look for and the method will return the index of the first occurrence or a -1 if it is not found. Once you have the initial index of the string from indexOf(), then you can use substring to get the string. For the second parameter in the substring method, the end index, you can just add the length of the String you're looking for, minus 1, to the start index.
If you want to do this from a more object oriented approach, I recommend creating an object for each String and then you can customize that class of object to have a parameter holding what type of item the String is. Then, using the comparator, you can iterate through the array finding types of items. I provided an in depth answer on how to do this in this question.
Give one of these a shot and if you're still stuck or having difficulties, comment on my answer and I can add an edit with some code. But it's important that you try first!