i must have missed something here.
i asumed u were receiving this string from the server, and parseing it just for your own display, in which case the loop i made should be very fast at doing.
who or what are us ending the data to, and why, and howoften .. what trigers it .. more info :P
basicly u can skip all those questions if this universaly aplyable idea helps you, if you are re transmiting data to other users (i'm guessing that your makeing yourself a server or a gateway, or emulating a proxie or something .. hard to say
then simply keep a maintained list for yourself and simply edit the list as needed, that way your not re parseing the data each time u wish to transmit it, you save for yourself a copy of the parsed data .. and u edit that as required (joins/parts seen etc) .. then simply transmit your copy of the parsed data
in perhaps simplier terms
keep a hash table or ini file (or var, although i recomend u use hash) of the nicks in the channel, so u could use my identifer to creat an entry in a hash table of the nicks in that channel, then when u see a join, edit the hash table acordingly instead of re parseing everything, same for part, then wehn you need to transmit the data simply transmit your saved already parsed copy
well i tryed to put it in simpler terms .. thats not my strong point :P .. if you need it explained in greater detail ask and ill spell it all out line for line ..
hope this is helpful
if not .. more information as to what you need to do is required