0

我正在使用 StreamReader 读取 HTML 文件。我想删除以 . 开头@*和结尾的字符串的一部分*@。可能有多次出现,我想将它们全部删除。

4

3 回答 3

1

使用正则表达式,如:

string input; // string containing data to be replaced
Regex regex = new Regex("[@][*].*?[*][@]", RegexOptions.Multiline);
string replaced = regex.Replace(input, string.Empty);

这会找到所有以开头@*和结尾*@的字符串,并将它们替换为空字符串,从而有效地删除它们。

请注意,这需要将整个文件作为字符串加载。更好的解决方案可能是创建一个简单的状态机,它读取一个流并将其复制到另一个流中,直到@*找到字符串,然后停止复制到另一个字符串,直到*@找到。

于 2012-09-17T12:44:27.647 回答
1

更新akton正则表达式:

Regex regex = new Regex(@"@\*(?:[^*]+|\*[^@])*\*@");

如果我们使用"[@][*].*[*][@]"那么 next 将无法正常工作

"@* That was 2 *@  THIS WILL BE DELETED TOO!  @* 2. *@"

作为奖金(?: )用于删除内部回点。

于 2012-09-17T13:29:24.090 回答
1

@\*.*?\*@用空字符串替换所有匹配项。

str = Regex.Replace(str, @"@\*.*?\*@", "", RegexOptions.Singleline);
于 2012-09-17T13:41:48.620 回答