5
我想要做的是在我的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。 next方法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中那樣突出顯示。請引導我通過這個或者是他們的任何其他出路。
在此先感謝
感謝您的回覆,但Regex無法解決問題,因爲如果您查看Inner HTML,它會轉換數據中包含字母和字符的任何開始標記。 – 2012-08-02 12:25:47