On Saturday, January 14, 2012 19:45:55 Jonathan M Davis wrote: > If you have to worry about punctuation, then == isn't going to work. You'll > need to use some other combination of functions to strip the punctuation > from one or both ends of the word. One possible solution would be something > like > > foreach(word; splitter!(std.uni.isWhite)(str)) > { > auto found = find!(not!(std.uni.isPunctuation))(word); > if(found.startsWith(listOfWords)) > { > //... > } > }
Actually, if the word has to match exactly, then startsWith isn't going to cut it. What you need to do is outright strip the punctuation from both ends. You'd need something more like word = find!(not!(std.uni.isPunctuation))(word); word = array(until!(std.uni.isPunctuation)(word)); if(canFind(wordList, word)) { //... } - Jonathan M Davis