Считайте строку по словам, а не по символу - PullRequest
0 голосов
/ 08 сентября 2018

Я работаю над этим кодом, в котором он может определить слово, перечисленное ниже, из веб-браузера. Эти слова превратятся в звездочку, как только они будут идентифицированы, и подсчитают, сколько слов было заменено, но это не сработало. Кто-то может помочь?

Вот мой код:

   private void button1_Click(object sender, EventArgs e)
    {
        webBrowser1.Navigate(txbAdress.Text);
        webBrowser1.DocumentCompleted += webBrowser1_DocumentCompleted;
    }

    private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
    {
        IHTMLDocument2 doc2 = webBrowser1.Document.DomDocument as IHTMLDocument2;
        StringBuilder html = new StringBuilder(doc2.body.outerHTML);


        string query;
        query = @"

выберите слово из ListWords «;

        List<string> words = new List<string>();

        DataSet ds;
        DataRow drow;

        ds = DatabaseConnection.Connection1(query);
        int index, total;

        total = ds.Tables[0].Rows.Count;

        string current_word;

        for (index = 0; index < total; index++ )
        {
            drow = ds.Tables[0].Rows[index];
            current_word = drow.ItemArray.GetValue(0).ToString();

            words.Add(current_word);
        }

        Console.WriteLine(query);


        Console.WriteLine("array:" + words);
        foreach (String key in words)
        {
           // String substitution = "<span style='background-color: rgb(255, 0, 0);'>" + key + "</span>";

            int len = key.Length;
            string replace = "";

            for ( index = 0; index < len; index++)
            {
                replace += "*";
            }

            html.Replace(key, replace);
            //count++;
        }

        //Console.WriteLine("Total number of words: " + count);


        doc2.body.innerHTML = html.ToString();
    }

1 Ответ

0 голосов
/ 08 сентября 2018

Просто посчитайте их, прежде чем заменить их

Дано

public int CountOccurrences(string source, string match)
{
   var pos = 0;
   var count = 0;
   while ((pos < source.Length) && (pos = source.IndexOf(match, pos, StringComparison.Ordinal)) != -1)
   {
      count++;
      pos += match.Length;
   }

   return count;
}

Пример

var count = CountOccurrences(html,key);
html.Replace(key, substitution);
...