Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/266.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 正则表达式替换和替换字符串_C#_Regex - Fatal编程技术网

C# 正则表达式替换和替换字符串

C# 正则表达式替换和替换字符串,c#,regex,C#,Regex,我有以下代码: Regex.Replace(text, words.ToString(), "<dfn title=\"" + this.FindDefinition("$0") + "\">$0</dfn>", RegexOptions.IgnoreCase | RegexOptions.Compiled); 我遇到的问题是FindDefinition方法。我想发送原始单词进行查找并返回定义文本。这是可能的还是我需要创建这样的模板: Regex.Replace(te

我有以下代码:

Regex.Replace(text, words.ToString(), "<dfn title=\"" + this.FindDefinition("$0")  + "\">$0</dfn>", RegexOptions.IgnoreCase | RegexOptions.Compiled);
我遇到的问题是FindDefinition方法。我想发送原始单词进行查找并返回定义文本。这是可能的还是我需要创建这样的模板:

Regex.Replace(text, words.ToString(), "<dfn title=\"{$0}\">$0</dfn>", RegexOptions.IgnoreCase | RegexOptions.Compiled);
然后搜索它,用我的定义替换它

我也尝试过:

Regex.Replace(text, words.ToString(), this.ReplaceWord, RegexOptions.IgnoreCase | RegexOptions.Compiled); 

private string ReplaceWord(Match m)
{
    return "<dfn title=\"" + this.FindDefinition(m.Value) + "\">$0</dfn>";
}
FindDefinition方法可以很好地工作,但是我在获取原始值时遇到了一个问题

我有什么遗漏吗?

试试这个:

return string.Format("<dfn title=\"{0}\">{1}</dfn>",
                     this.FindDefinition(m.Value),
                     m.Value);

如果您是手工构建XML,那么它几乎总是完全错误的

您需要使用evaluator替换词。你为什么不这样做:

private string ReplaceWord(Match m)
{
    return "<dfn title=\"" + this.FindDefinition(m.Value) + "\">"+m.Value+"</dfn>";
}

我倾向于使用类似m.Groups[0]的东西。在regex中使用Value和grouping。

你当然是对的。。我之前测试这个的时候肯定做错了什么。谢谢:。