用string.Empty替换多个占位符

时间:2017-04-21 06:21:32

标签: c# string replace

我有一个带占位符的字符串。

string Str="<tr><td>This is the {{data}} with {{sample}} string which needs to be {{handled}}</td></tr>";

我从数据库获取数据,并将根据我从同一数据中获取的数据替换字符串。

之后,可能会有非替换字符串.g。

string Str="<tr><td>This is the replaced data with {{sample}} string which needs to be {{handled}}</td></tr>";

现在,如果它包含{{...}}的数据,我想删除所有<tr>。在上面的示例中,{{sample}}和{{processed}}可以与整行(<tr>)一起删除。如何实现?

2 个答案:

答案 0 :(得分:1)

您可以使用正则表达式以更安全的方式执行此操作:

var cleanedString = Regex.Replace(yourString, "<tr>.*{{[^}]*}}.*?</tr>", string.Empty, RegexOptions.IgnoreCas);

此正则表达式使用包含多个<tr>的字符串,因此基本上是字符串

<tr><td>This is the replaced data with {{sample}} string which needs to be {{handled}}</td></tr><tr><td>Another row</td></tr>

变为

<tr><td>Another content</td></tr>

但是这不适用于嵌套表,例如

<tr><td>{{foo}}<table><tr><td>bar</td></tr></table></td></tr>

会变成

</table></td></tr>.

如果您需要支持我怀疑您确实需要正确解析整个DOM,尽管您当然可以更改reg-ex以简单地跳过具有嵌套表的TR。

答案 1 :(得分:0)

if (Str.Contains("{{"))
{
    Str = string.Empty;
}