import std.experimental.all;
auto splitLowerAndFilter(string input)
return input.take(1).asLowerCase.chain(input.drop(1).filter!(c => c != ' ')).array;
auto filterAndMapWithIndex(string input)
return input.filter!(c => c != ' ')
.map!((a){if(index++==0){return std.uni.toLower(a);}else{return a;}});
auto filterEnumerateAndMap(string input)
return input.filter!(c => c != ' ')
.map!((a){if(a[0]==0){return std.uni.toLower(a[1]);}else{return a[1];}});
string filterAndLowerFirstAsSlice(string input)
char[] output = uninitializedArray!(char[])(input.length);
foreach(in_idx, char c; input)
c = std.ascii.toLower(c);
return cast(string) output[0..out_idx];
string input = "My Capital String";
auto lower1 = input.splitLowerAndFilter.array;
assert(lower1 == "myCapitalString");
auto lower2 = input.filterAndMapWithIndex.array;
assert(lower2 == "myCapitalString");
auto lower3 = input.filterEnumerateAndMap.array;
assert(lower3 == "myCapitalString");
auto lower4 = input.filterAndLowerFirstAsSlice;
assert(lower4 == "myCapitalString");