Мое Утверждение For Отображает Мою HTML-Страницу Несколько Раз, А Не Только Один Раз

#c# #asp.net

Вопрос:

Я пытаюсь просмотреть HTML-страницу и заменить каждый пронумерованный идентификатор кампании и добавить тег div с номером и z-индексом, чтобы выделить каждую ссылку. Оператор for заменяет каждый тег div следующим идентификатором кампании 1-10, но он распечатывает 10 одинаковых HTML-страниц, на каждой из которых заменен следующий пронумерованный идентификатор кампании и тег div. Мне просто нужна одна страница с каждой «href», пронумерованной на странице. Что мне нужно изменить в этом коде, чтобы это произошло? Я бы поместил вывод, чтобы вы могли его увидеть, но это слишком много HTML-кода.

 using (SqlConnection connection =
                       new SqlConnection(con))
        {
            SqlCommand command = new SqlCommand(queryString, connection);
            connection.Open();
            SqlDataReader reader = command.ExecuteReader();
            while (reader.Read())
            {
                
                string CampaignId = reader["CampaignId"].ToString();
                string htmlCreate= reader["ConvertedCreative"].ToString();
                StringBuilder strContents = new StringBuilder();
                for(int i = 1; i <= 10; i  )
                {

                    string replacement = "<div style="z-indexer:1;background:#0c538e;width:2.25em;height:2.25em;text-align:center;color:white;">"   i   "</div><a href="http://www.trackingstats.info/Process.aspx.c=/"   CampaignId   "amp;l="   i   """;
                    Regex regex = new Regex("<a href="http://www.trackingstats.info/Process.aspx.c=24896amp;l="   i   """, RegexOptions.IgnoreCase);
                    string result = regex.Replace(htmlCreate, replacement);
                    strContents.AppendLine(result);





                }
                Label1.Text = strContents.ToString();
            }
           
        }
 

Ответ №1:

Если я правильно понимаю вашу проблему, похоже, вам нужно переместить строку strContents.AppendLine(result); за пределы цикла for. Вы добавляете текст результата в StringBuilder каждый раз через цикл, что будет равно 10 раз.

На самом деле, если вы не хотите дублировать его 10 раз, вам не нужен конструктор строк.

Может быть, что-то вроде этого?

 for(int i = 1; i <= 10; i  )
{
    string replacement = "<div style="z-indexer:1;background:#0c538e;width:2.25em;height:2.25em;text-align:center;color:white;">"   i   "</div><a href="http://www.trackingstats.info/Process.aspx.c=/"   CampaignId   "amp;l="   i   """;
    Regex regex = new Regex("<a href="http://www.trackingstats.info/Process.aspx.c=24896amp;l="   i   """, RegexOptions.IgnoreCase);
    htmlCreate = regex.Replace(htmlCreate, replacement);
}
Label1.Text = htmlCreate;