I like using standard character delineators (like "," or "|" or ":"

So using your example:
"color 0,0,1"
let's say this is your entire message, and you save it in your listen as a string named msg
list newlist = llParseString2List(msg,[],[" ",","]);
newlist would be = ["color"," ","0", ",", "0", ",", "1"]
or if you changed your input to "color,0,0,1" you can now parse just on the comma and throw it away:
list newlist = llParseString2List(msg,[","],[]);
newlist would be = ["color", "0", "0", "1"];
Also what's easy enough to do is have a 0-255 input, then simply divide each input by 255 before you use the color. In this way you can have colors standard to how prims are assigned color.
You can also double parse a list on your original input:
string msg = "color 0,0,1";
list newlist = llParseString2List(llList2String( llParseString2List(msg,[" "],[]),1) );
would produce newlist = ["0","0","1"];
Broken down - first the message is parsed by space delineator, leaving two substrings "color" and "0,0,1" in a list. Then the second string in this list is parsed by commas, producing the final list.
Finally, no matter which way you choose, you access the member in the list like - integer color = llList2Integer(newlist,1);
this would grab the second item in newlist as an integer
http://secondlife.com/badgeo/wakka.php?wakka=llParseString2Listhttp://secondlife.com/badgeo/wakka.php?wakka=llList2Stringhttp://secondlife.com/badgeo/wakka.php?wakka=lists