How about you index the dictionary file and then work you're way through the string character by character matching against the word. When the next letter results in no further branches in the index it takes that as a word, if the next word results in a dead end try the previous word again minus one character.
(excuse me for not actually checking against a dictionary for obsucure words)
l = dead end
not making sense, backup
stop at "a"
ugh... hope you get the idea.