Using the Find function would work here...Find("-",line item) which will give you a number. Then, in another line item, you can use the Left() function, Left(line item, results of the find - 1). You have to subtract the one because the Find is telling you where the - is.
Yes, beat you by that much. And yes, you are correct, text parsing is fairly expensive, but sometimes it has to be done. So, when it is required, it is best to split it over multiple line items instead of putting all of the parsings in one line item. And lastly, yes, it is best to be done in SYS module.