The recent discussion got me wondering how Phobos stacked up against the C++ Boost String Algorithms library.
Some background on the design of the Boost library: http://www.boost.org/doc/libs/1_55_0/doc/html/string_algo/design.html TL;DR: It works somewhat like ranges. Google Spreadsheet with the comparison: http://goo.gl/Wmotu4 I wouldn't be surprised if I missed functions that would do things easily but I did look reasonably hard for ways to accomplish things. Do share if you spot anything I missed but everything should be intuitive rather than clever. A few things stand out: 1. They have case-insensitive versions of pretty much everything. It's not hard to do a map!toLower/toUpper in D but it's also not obvious (nor do I know if that's actually correct in languages outside of english). 2. Replace and erase options a very slim. Doing something like a chain() on the results of findSplit() and what you want to inject I guess would work for replacing but that's really not very elegant. remove() is simply way too cumbersome to use. I guess you could use indexOf, then indexOf again with a slice with the first result, then pass both two a tuple in remove. That's terrible though. 3. Doing an action several times rather than once is tricky. As in, there is no findAll() that returns a range of ranges. Doing the things mentioned in 2 several times over a whole range just adds another level of complication.