The Strings object has an indexOf() function and substring() functions to allow for parsing of strings and breaking them up into their various parts. I built a standardised ExtractNextDelimitedField() function to parse comma, tab and other delimited strings into their field-by-field parts.
Ignore adverse comments about the Strings object - past problems have been fixed and the Strings class now works correctly just like in other languages.
That said you would be wise to understand and manage your use of the Strings class and the effect of concatenating multiple fields into one long string - and vice-versa - stripping individual fields off a string that gets shorter and shorten until you have processed all the fields. These operations can fragment heap memory but my application experience is that free heap memory is managed well enough and does not get increasingly fragmented the longer your application runs.
My 5,000 line application has been running for 2 days and 19 hours and only uses Strings (maybe a hundred spread through 100 procedures). Right now free heap is 562 bytes containing these four blocks of memory - 445,93,19,5. The 445 byte block is likely not to have anything to do with String usage - it will be related to an ethernet client or SD card file object release. But the 19 and 5 byte blocks were probably caused by a String operation and will be re-used or released by the heap manager when it can.