2012-08-01 19 views
5

Quello che sto cercando di fare è contrassegnare una sottolineatura punteggiata rossa per ogni ortografia presente nel controllo del browser Web che ho usato nella mia applicazione winform.Evidenziamento ortografico Controllo ortografia nel browser web

Ecco il mio frammento di codice: -

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; 
    } 

Qui InnerHTML è l'InnerHTML del controllo del browser web ottenuto per i dati inseriti. Il metodo successivo è 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) 
     { 
     } 
    } 

il problema principale è che tutto funziona bene con il codice di cui sopra, ma ogni volta che ricevo un carattere speciale o qualsiasi spazio nel valore di riferimento, il codice di cui sopra anche evidenziare lo stesso, ma io non voglio metterlo in evidenza come fatto in MS Word. Per favore guidami attraverso questa o è la loro altra via d'uscita.

Grazie in anticipo

risposta

0

Si può decidere di check out Regex. Sembra che sarebbe di aiuto con quello che stai cercando di realizzare.

+0

grazie per la risposta, ma Regex non funzionerà perché se si guarda al codice HTML interno converte qualsiasi tag di apertura presente nei dati che conterrà sia l'alfabeto che il carattere .. –

Problemi correlati