Заменить не работает при применении к html строке - PullRequest
0 голосов
/ 09 апреля 2020

В качестве вступления я создал документ с использованием MS Word, а затем сохранил его как html документ. Начиная с C# я создаю неупорядоченный список html (в формате MS Word), а затем добавляю его в документ html, заменяя указанный тег c.

У меня есть строковая переменная unorderedHtmlList изначально инициализируется пустой строкой. Затем я объединяю строку html и заменяю некоторые теги, заключенные в символы "[[" и "]]". По какой-то причине, когда я применяю Replace, он не заменяет элементы [[fieldName]] и [[fieldValue]] новыми значениями. См. Код ниже:

string unorderedHtmlList = string.Empty;

foreach (System.Data.DataRow row in myDataTable.Rows)
{
    string name = row["fieldName"].ToString();               
    string value = row["fieldValue"].ToString();

    unorderedHtmlList += "<p style='margin-left:36.0pt;text-align:justify;text-indent:-18.0pt;" +
                        "line-height:125%;mso-list:l1 level1 lfo3'><![if !supportLists]><span" +
                        "style='font-size:10.5pt;line-height:125%;font-family:\"Arial\",sans-serif;" +                                        
                        "mso-fareast-font-family:Arial;color:#222222'><span" +
                        "style='mso-list:Ignore'>-<span style='font:7.0pt \"Times New Roman\"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;" +
                        "</span></span></span><![endif]><span style='font-size:10.5pt;" +
                        "line-height:125%;font-family:\"Arial\",sans-serif;color:#222222'>[[fieldName]]" +
                        "</span><span style='font-size:10.5pt;line-height:125%;font-family:" +
                        "\"Helvetica\",sans-serif;color:#222222'>[[fieldValue]]</span><span" +
                        "style='font-size:10.5pt;line-height:125%;font-family:\"Arial\",sans-serif;" +
                        "color:#222222'><o:p></o:p></span></p>".Replace("[[fieldName]]", name).Replace("[[fieldValue]]", value);
}

Есть идеи, почему не работает замена?

1 Ответ

2 голосов
/ 09 апреля 2020

Вы объединяете строку, и операция замены выполняется только для последней части.

"color:#222222'><o:p></o:p></span></p>".Replace("[[fieldName]]", name).Replace("[[fieldValue]]", value);

Попробуйте:

        unorderedHtmlList += ("<p style='margin-left:36.0pt;text-align:justify;text-indent:-18.0pt;" +
                            "line-height:125%;mso-list:l1 level1 lfo3'><![if !supportLists]><span" +
                            "style='font-size:10.5pt;line-height:125%;font-family:\"Arial\",sans-serif;" +
                            "mso-fareast-font-family:Arial;color:#222222'><span" +
                            "style='mso-list:Ignore'>-<span style='font:7.0pt \"Times New Roman\"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;" +
                            "</span></span></span><![endif]><span style='font-size:10.5pt;" +
                            "line-height:125%;font-family:\"Arial\",sans-serif;color:#222222'>[[fieldName]]" +
                            "</span><span style='font-size:10.5pt;line-height:125%;font-family:" +
                            "\"Helvetica\",sans-serif;color:#222222'>[[fieldValue]]</span><span" +
                            "style='font-size:10.5pt;line-height:125%;font-family:\"Arial\",sans-serif;" +
                            "color:#222222'><o:p></o:p></span></p>").Replace("[[fieldName]]", name).Replace("[[fieldValue]]", value);         
...