Je travaille sur des documents html en utilisant le contrôle WebBrowser, j'ai besoin de faire un utilitaire qui cherche un mot et le met en évidence dans le navigateur. Cela fonctionne bien si la chaîne est en anglais, mais pour les chaînes dans d'autres langues, par exemple en coréen, cela ne semble pas fonctionner.Rechercher des chaînes MultiByte en utilisant RegEx
Le scénario où le code ci-dessous mentionné fonctionne est-
Tenir compte utilisateur a sélectionné dans la page Web un mot « exemple », maintenant je dois souligner ce mot et toutes ses occurences. Aussi j'ai besoin de calculer leur byteOffset (l'extrait de code fait cela seulement).Maintenant, pour la langue anglaise, le code ci-dessous fonctionne bien, mais pour des langues comme le coréen, cela ne fonctionne pas du tout.
son pas pénétrer à l'intérieur de la boucle for-each
foreach (Match m in reg.Matches(this._documentContent))
ici _documentContent contient la source de la page Web sous forme de chaîne. OccurenceNo est le no. d'occurence de mot sélectionné dans le document
Voici le code, strTemp contient la chaîne coréenne:
string strTemp = myRange.text;
string strExp [email protected]">(([^<])*?)" + 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;
}
}
}
montrant le code réel aiderait probablement ... – RageZ
pouvez-vous écrire du code. C# est unicode, aussi longtemps que votre encodage est correctement lu, vous devriez être capable de faire n'importe quoi avec les chaînes. –