I held off posting on this because I was hoping someone else would have some good ideas. Quite frankly, everytime I've started something like this in Alice, I've very quickly switched to another approach - the inability to extract a part of a string makes things quite difficult.
As you suspect, you will have to use a list or an array for the names in the book. You add a name to the list each time you want to update the list and then search for a match with the name you want to look up. I find lists are a little more reliable and since, in Alice, you can only have one dimensional arrays, they don't offer a lot of advantages.
The real problem is that you cannot make the entry in the list contain both the name and the phone number - since to get a match, you'd have to type the name and number in to do the search. If you already do know the number, why bother?
You will have to make another list/array with the phone numbers
ordered in the same sequence as the names. Then, when you've found the name, look at the "number list" item with the same index for the phone number and have something in the world say it as a string (if you didn't already store it that way).
The real difficulty is keeping the indicies of the two lists synchronized as new names are added or existing ones are deleted. Not really easy - and one error will ruin the whole "phone book" if you use lists.
Good luck.