在Web浏览器控件中突出显示错误的拼写

时间:2012-08-01 12:03:37

标签: c# winforms

我要做的是在我的winform应用程序中使用的Web浏览器控件中为每个错误的拼写标记一个虚线的红色下划线。

这是我的代码段: -

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

这里InnerHTML是为输入数据获得的Web浏览器控件的InnerHTML。 下一个方法是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)
        {
        }
    }

主要问题是上面的代码一切正常,但每当我在目标值中得到任何特殊字符或任何空格时,上面的代码也突出显示相同但我不想强调在MS Word中完成。请引导我通过这个或他们的任何其他方式。

提前致谢

1 个答案:

答案 0 :(得分:0)

您可能需要check out Regex。似乎它会对你想要完成的事情有所帮助。