Hi,
I've just made this unicode wordreplacer function working, but It
seems not too nice and functional-ish.
Are there ways to make it more simple?
import std.stdio, std.range, std.algorithm, std.uni, std.utf,
std.conv;
bool isWordChar(dchar ch){
return isAlphaNum(ch) || ch=='_';
}
string replaceWords(alias fun = isWordChar)(string str, string
from, string to){
auto res = appender!string();
auto src = str.byCodePoint;
foreach(isWord, len; str.map!fun.group){
auto act = src.take(len).text;
src.popFrontExactly(len);
res.put(isWord && act==from ? to : act);
}
return(res[]);
}
void main(){
immutable str = "Type=FunctionType Type; éType Type2: Type
aTypeb Type";
str.replace("Type", "AsmType").writeln;
str.replaceWords("Type", "AsmType").writeln;
}
Thanks in advance!