出于好奇 - 是否有更好的表现方法来做这个字符串替换?

Jon*_*Jon 5 .net c# string .net-3.5 c#-3.0

我有以下方法,我需要检查某些字符串,无论如何,然后删除它们.只是想知道是否有更好的表现方式?

private void MyMethod(string Filter)
{
   //need to remove <Filter> and </Filter> case in-sensitive
   var result = Filter.ToLower().Replace("<filter>","");
   result = Filter.ToLower().Replace("</filter>,"");

  ...........................
}
Run Code Online (Sandbox Code Playgroud)

Guf*_*ffa 3

这种方法的一个问题是,它将整个字符串转换为小写,而不仅仅是进行不区分大小写的替换。

您可以使用正则表达式进行不区分大小写的匹配:

string result = Regex.Replace(
  Filter,
  "</?filter>",
  String.Empty,
  RegexOptions.IgnoreCase
);
Run Code Online (Sandbox Code Playgroud)

另一种选择是使用该IndexOf方法来定位字符串,因为它可以进行不区分大小写的搜索:

string result = Filter;
int index;
while ((index = IndexOf("<filter>", StringComparison.OrdinalIgnoreCase)) != -1) {
   result = result.Remove(index, 8);
}
while ((index = IndexOf("</filter>", StringComparison.OrdinalIgnoreCase)) != -1) {
   result = result.Remove(index, 9);
}
Run Code Online (Sandbox Code Playgroud)