5

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

这是我的代码片段:-

    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 中那样突出显示。请指导我完成这个或者是他们的任何其他出路。

提前致谢

4

1 回答 1

0

您可能想查看 Regex。似乎这对您要完成的工作有所帮助。

于 2012-08-02T12:13:10.480 回答