我有一个带占位符的字符串。
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>
)一起删除。如何实现?
答案 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;
}