string parsing
BlitzMax Forums/BlitzMax Programming/string parsing| 
 | ||
| I have a string that looks like the following: Jul 29 17:44:20 mail httpd: Possible outgoing spam: by USERNAME (Domain.net) at 000.000.000.000 on 07/29/2007 22:44:20%: Total 200 recipients (TO: ) (CC: ) (BCC: *@hotmail.com, *@hotmail.com,*@..., *@hotmail.com, *@hotmail.com, *@hotmail.com How can i go about reading that entire string and only extracting the Username part? | 
| 
 | ||
| Is username always surrounded by the "by " and the "(Domain.net)" ? You could instr the position of "by " and "(Domain". Based on the positions you get you will know exactly on which position the username starts, and how long it is. The rest is a matter of slicing I guess.. | 
| 
 | ||
| use a regular expression. or... find "spam: by" find the next "(" and trim the bit inbetween. | 
| 
 | ||
| Another option: if the username is always the n-th word, you could use a function that returns the n-th space-seperated slice from this string.. | 
| 
 | ||
| yeah none of that changes so I could search between by and (Domain) | 
| 
 | ||
| as per what CS_TBL said... Local in:String = "Jul 29 17:44:20 mail httpd: Possible outgoing spam: by USERNAME (Domain.net) at 000.000.000.000 on 07/29/2007 22:44:20%: Total 200 recipients (TO: ) (CC: ) (BCC: *@hotmail.com, *@hotmail.com,*@..., *@hotmail.com, *@hotmail.com, *@hotmail.com"
Local user:String = in.split(" ")[9]
Print user
 | 
| 
 | ||
| There might be a problem with usernames that have spaces tho.. :P | 
| 
 | ||
| its ok usernames cannot have spaces :)...thanks dmaz | 
| 
 | ||
| whats .split()? | 
| 
 | ||
| It's apparently a new method added without being documented.  Guess I can ditch my SplitString function now. | 
| 
 | ||
| Its a funcitonality of the string class like join as well. Have been added during 1.24 and were mentioned a few times by mark himself. | 
| 
 | ||
| oh |