这是我用来从内容中挑选出特殊替换字符串并将它们本地化的一个实现。
protected string FindAndTranslateIn(string content)
{
return Regex.Replace(content, @"\{\^(.+?);(.+?)?}", new MatchEvaluator(TranslateHandler), RegexOptions.IgnoreCase);
}
public string TranslateHandler(Match m)
{
if (m.Success)
{
string key = m.Groups[1].Value;
key = FindAndTranslateIn(key);
string def = string.Empty;
if (m.Groups.Count > 2)
{
def = m.Groups[2].Value;
if(def.Length > 1)
{
def = FindAndTranslateIn(def);
}
}
if (group == null)
{
return Translate(key, def);
}
else
{
return Translate(key, group, def);
}
}
return string.Empty;
}
从匹配评估器委托中,您返回要替换的所有内容,因此在我返回的地方,您将有粗体标签和编码调用,我的也支持递归,因此对于您的需求来说有点过于复杂,但您可以缩减示例您的需求。
这相当于对匹配集合进行迭代并执行部分替换方法工作。它只是为您节省了一些代码,并且您可以使用花哨的 shmancy 委托。