String handling - from first steps to practical examples
Archive - Originally posted on "The Horse's Mouth" - 2010-11-13 10:07:08 - Graham EllisInitial String handling examples on a training course are sometimes a bit mundane - and that's because we have to cover some of the basics like "what is a string" before we start reading them in useful quantities from files, databases, or web resources. But it's important to get those basics understood early - questions like "how do we test for two strings being equal?
Now ... in most languages, you may already know that two equals signs checks equality ... and so you would expect you use that symbol for string equality. And it's surprising how often you would be wrong.
&bull == will work very nicely in PHP and in Python
but ...
&bull = is what you use in an SQL WHERE clause
&bull eq or (more modern) ~~ is what you need in Perl
and some language have functions or methods for the job:
&bull strcmp is the function in C
&bull equal is the function in Java ...
and that's because these are pointer based languages,and if you compare with == you're checking for two names pointing at the same memory address, and not looking at two different locations to see if they contain the same thing.
There's a Java example that shows how string comparisons work - [here - ashton.java] - with an explanation too. A further example - [here - purton.java] - shows you a number of other tests on strings in Java - testing to see if they're qual (but ignoring case) or the start or the end of the string. And when we start to manipulate strings, we use functions like indexOf and substring - a further example [here - oaksey.java] and another [here - minety.java].
Moving on, then, really practical and useful string demonstations start once you get on to applications / programs that have a significant flow of data being read - and there's a new Java example from last week [here - Vest.java] that shows that. We've used a BufferedReader and FileReader objects to get a file handle to the data source, line by line, and the readLine method to read the data itself. We're then using indexOf and substring again - but this time with practical good cause - to manipulate the data.
Moving on further, you can start using utility classes such as ArrayLists and HashMaps to hold, count, and manage strings - the example above has been extended to show this [here - Tshirt.java] (I could usefully have demonstrated a StringTokenizer too!) and then to add some good validation checks using excpetions [here - Bikini.java].