我正在使用WebBrowser控件处理html文档,我需要创建一个实用程序来搜索单词并在浏览器中突出显示它。如果字符串是英文的话,它很有效,但对于其他语言的字符串,例如韩文字符串,它似乎不起作用。
下面提到的代码适用的场景是 -
考虑用户在网页中选择了一个单词“Example”,现在我需要突出显示这个单词及其出现的所有内容。此外,我需要计算他们的byteOffset(代码片段只做它)。
现在对于英语语言,以下代码可以正常工作,但对于像韩语这样的语言,它根本不起作用。
它没有进入for-each循环
foreach (Match m in reg.Matches(this._documentContent))
这里_documentContent包含网页源字符串。 发生不是没有。文件中所选单词的出现
这是代码,strTemp包含韩语字符串:
string strTemp = myRange.text;
string strExp =@">(([^<])*?)" + strTemp + "(([^<])*?)<";
int intCount =0;
Regex reg = new Regex(strExp);
Regex reg1 = new Regex(strTemp);
foreach (Match m in reg.Matches(this._documentContent))
{
string strMatch = m.Value;
foreach (Match m2 in reg.Matches(strMatch))
{
intCount += 1;
if (intCount==OccurenceNo)
{
int intCharOffset = m.Index + m2.Index;
System.Text.UTF8Encoding d = new System.Text.UTF8Encoding();
int intByteOffset = d.GetBytes( _documentContent.Substring(1, intCharOffset)).Length;
}
}
}
答案 0 :(得分:0)
如果代码适用于英语单词,但没有返回韩语的任何结果,那么我可能会建议这是一个文化问题,因此您可以尝试将RegexOptions设置为CultureInvariant:
Regex reg = new Regex(strExp, RegexOptions.CultureInvariant);
Regex reg1 = new Regex(strTemp, RegexOptions.CultureInvariant);
答案 1 :(得分:0)
我使用以下RegEx代码进行韩语:
private static readonly Regex regexKorean = new Regex(@"[가-힣]");
public static bool IsKorean(this char s)
{
return regexKorean.IsMatch(s.ToString());
}
if (someText.Any(z => z.IsKorean()))
{
DoSomething();
}