Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/75.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# 替换不区分大小写的StringBuilder_C#_Html_Regex_Stringbuilder - Fatal编程技术网

C# 替换不区分大小写的StringBuilder

C# 替换不区分大小写的StringBuilder,c#,html,regex,stringbuilder,C#,Html,Regex,Stringbuilder,我已经读过很多次关于在需要多次替换时使用Stringbuilder和string的优点。我需要将一个HTML字符串(所有格式都非常简单)转换为WIKI符号,并打算从我在SO上找到的代码中推出自己的代码。我想知道是否有更简单的方法来实现这一点,以及如何利用它实现StringBuilder的好处。到目前为止,我所有的尝试都惨遭失败。请提前告知并感谢您 public static string ConvertHTML2WIKInotation(string htmlstring)

我已经读过很多次关于在需要多次替换时使用Stringbuilder和string的优点。我需要将一个HTML字符串(所有格式都非常简单)转换为WIKI符号,并打算从我在SO上找到的代码中推出自己的代码。我想知道是否有更简单的方法来实现这一点,以及如何利用它实现StringBuilder的好处。到目前为止,我所有的尝试都惨遭失败。请提前告知并感谢您

    public static string ConvertHTML2WIKInotation(string htmlstring)
        {
            StringBuilder sb = new StringBuilder(htmlstring);

            htmlstring = ReplaceInsensitive(htmlstring, "<hr>", "----");
            htmlstring = ReplaceInsensitive(htmlstring, "<hr />", "----");
            ... etc.

            return sb.ToString();
        }

        static public string ReplaceInsensitive(this string str, string from, string to)
        {
            str = Regex.Replace(str, from, to, RegexOptions.IgnoreCase);
            return str;
        }
公共静态字符串转换器HTML2Wikinotation(字符串htmlstring)
{
StringBuilder sb=新的StringBuilder(htmlstring);
htmlstring=replaceSensitive(htmlstring,“
”,“---”); htmlstring=replaceSensitive(htmlstring,
,“---”); 等 使某人返回字符串(); } 静态公共字符串替换不敏感(此字符串str、字符串from、字符串to) { str=Regex.Replace(str,from,to,RegexOptions.IgnoreCase); 返回str; }
stringbuilder的好处在于,您不会在每次替换时都创建新字符串。您的实现不受益于此属性。 如果使用stringbuilder,则实际在stringbuilder上执行转换,而不是在输入字符串参数上执行转换:

    public static string ConvertHTML2WIKInotation(string htmlstring)
    {
        StringBuilder sb = new StringBuilder(htmlstring);

        sb.Replace("<hr>", "----");
        sb.Replace("<hr />", "----");

        return sb.ToString();
    }
公共静态字符串转换器HTML2Wikinotation(字符串htmlstring)
{
StringBuilder sb=新的StringBuilder(htmlstring);
替换(“
”,“---”); sb.替换(“
”,“---”); 使某人返回字符串(); }
如果需要不区分大小写,请查看:

stringbuilder的好处在于,您不会在每次替换时都创建新字符串。您的实现不受益于此属性。 如果使用stringbuilder,则实际在stringbuilder上执行转换,而不是在输入字符串参数上执行转换:

    public static string ConvertHTML2WIKInotation(string htmlstring)
    {
        StringBuilder sb = new StringBuilder(htmlstring);

        sb.Replace("<hr>", "----");
        sb.Replace("<hr />", "----");

        return sb.ToString();
    }
公共静态字符串转换器HTML2Wikinotation(字符串htmlstring)
{
StringBuilder sb=新的StringBuilder(htmlstring);
替换(“
”,“---”); sb.替换(“
”,“---”); 使某人返回字符串(); }
如果需要不区分大小写,请查看:

由于html标记不区分大小写,我建议使用非StringBuilder,因为在需要更多替换字符串的情况下,不建议使用SB

public static string ReplaceMultiple(
          string template, 
          IEnumerable<KeyValuePair<string, string>> replaceParameters)
{
   var result = template;

   foreach(var replace in replaceParameters)
   {
      var templateSplit = Regex.Split(result, 
                                    replace.Key, 
                                    RegexOptions.IgnoreCase);
      result = string.Join(replace.Value, templateSplit);
   }

   return result;
}
公共静态字符串替换多个(
字符串模板,
IEnumerable(可替换参数)
{
var结果=模板;
foreach(replaceParameters中的变量replace)
{
var templateSplit=Regex.Split(结果,
替换。键,
RegexOptions.IgnoreCase);
结果=string.Join(replace.Value,templateSplit);
}
返回结果;
}

由于html标记不区分大小写,我建议使用非StringBuilder,因为在需要更多替换字符串的情况下,不建议使用SB

public static string ReplaceMultiple(
          string template, 
          IEnumerable<KeyValuePair<string, string>> replaceParameters)
{
   var result = template;

   foreach(var replace in replaceParameters)
   {
      var templateSplit = Regex.Split(result, 
                                    replace.Key, 
                                    RegexOptions.IgnoreCase);
      result = string.Join(replace.Value, templateSplit);
   }

   return result;
}
公共静态字符串替换多个(
字符串模板,
IEnumerable(可替换参数)
{
var结果=模板;
foreach(replaceParameters中的变量replace)
{
var templateSplit=Regex.Split(结果,
替换。键,
RegexOptions.IgnoreCase);
结果=string.Join(replace.Value,templateSplit);
}
返回结果;
}

您最好使用html解析器。您最好使用html解析器。这无法处理不区分大小写的要求。感谢您的快速响应。这对我的案件不敏感有什么帮助?它没有。在您的情况下,除非您执行10000次,否则我将使用string.replace。如果您不想这样做,请查看我发布的链接。这不会处理不区分大小写的要求。感谢您的快速响应。这对我的案件不敏感有什么帮助?它没有。在您的情况下,除非您执行10000次,否则我将使用string.replace。如果您不想这样做,请查看我发布的链接。对不起,我对IEnumerables不太熟悉,您如何创建replaceParameters参数?尝试以下操作:replaceParameters=new[]{new KeyValuePair(
,“----”),new KeyValuePair(
,“,“---”)};很抱歉,我对IEnumerables不太熟悉,如何创建replaceParameters参数?请尝试以下操作:replaceParameters=new[]{new KeyValuePair(“
”,“---”)、new KeyValuePair(“
”,“---”);