2012-08-01 15 views
5

Lo que estoy tratando de hacer es marcar un subrayado rojo con puntos para cada ortografía incorrecta presente en el control del navegador web que he utilizado en mi aplicación winform.Destacando mal Ortografía en el control del navegador web

Aquí está mi código fragmento: -

public static string CheckSpelling(string InnerHTML) 
    { 
     string Val = ""; 
     try 
     { 
      StringBuilder strBu = new StringBuilder(); 
      strBu.Append(InnerHTML); 
      RemoveStyleAssigned(ref strBu);        
      for (int i = 0; i < strBu.Length; i++) 
      { 
       if (Convert.ToString(strBu[i]).ToLower() == "<") 
       { 
        for (int j = i + 1; j < strBu.Length; j++) 
        {        
         if (Convert.ToString(strBu[j]).ToLower() == ">") 
         { 
          i = j; 
          for (int k = j + 1; k < strBu.Length; k++) 
          { 
           if (Convert.ToString(strBu[k]).ToLower() != " ") 
           { 
            i = k; 
            CheckAndReplace(ref strBu, ref i); 
            break; 
           } 
          } 
          break; 
         } 
        } 
       } 
       else if (Convert.ToString(strBu[i]).ToLower() != " ") 
       { 
        CheckAndReplace(ref strBu, ref i);       
       } 
      } 
      Val = strBu.ToString(); 
     } 
     catch (Exception ex) 
     { 
     } 
     return Val; 
    } 

Aquí InnerHTML es el InnerHTML del control del explorador Web obtenido para los datos introducidos. El método siguiente es CheckandReplace

private static void CheckAndReplace(ref StringBuilder strBu, ref int i) 
    {    
     try 
     { 
      string Target = string.Empty; 
      string NewString = "";     
      for (int j = i; j <= strBu.Length; j++) 
      {     
       if (j == strBu.Length || Convert.ToString(strBu[j]).ToLower() == " " || Convert.ToString(strBu[j]).ToLower() == "<") 
       { 
        string Wordtocheck = ReplaceXmlCharacters(Target); 
        if (!IsSpellingCorrect(Wordtocheck)) 
        { 
         NewString = "<u style='text-decoration: none; border-bottom: 1px dotted #FF0000'>" + Target + "</u>";       
         strBu = strBu.Replace(Target, NewString, i, Target.Length);        
         i += NewString.Length - 1; 
        } 
        else 
        { 
         i = j - 1; 
        } 

        break; 
       } 
       else 
        Target += strBu[j]; 
      } 
     } 
     catch (Exception ex) 
     { 
     } 
    } 

El principal problema es que todo funciona bien con el código anterior, pero cada vez que tengo cualquier carácter especial o cualquier espacio en el valor objetivo, el código anterior también resaltar la misma pero no quiero resaltar eso como se hace en MS Word. Por favor, guíame a través de esto o es su otra salida.

Gracias de antemano

Respuesta

0

Es posible que desee check out Regex. Parece que ayudaría con lo que estás tratando de lograr.

+0

gracias por responder, pero Regex no funcionará porque si se mira al HTML interno, se convierte cualquier etiqueta de apertura presente en los datos que contendrá tanto el alfabeto como el carácter. –

Cuestiones relacionadas