Robię wyszukiwarkę dla języka arabskiego, która powinna podkreślać wynik meczu na czerwono. Biorąc pod uwagę 2 ciąg:Wyróżnij słowa dopasowania dwóch arabskich ciągów znaków (Javascript)
Keyword: بِسْمِ ٱلرحمن ٱلرحيم ملك
Result: بِسْمِ ٱللَّهِ ٱلرَّحْمَٰنِ ٱلرَّحِيمِ
Chcę wyróżnić słowa meczowe i znaki diakrytyczne na drugim ciągu. Pierwszy obraz jest kluczowe do wyszukiwania, drugi obraz jest tym, co mam nadzieję osiągnąć:
W pożądany efekt obrazu, tylko dopasowane słowa i „diakrytyczną/dhabt” zostanie podświetlona. Starałem się to osiągnąć z tych kodów:
var keyword = removeDhabt('بِسْمِ ٱلرحمن ٱلرحيم ملك').split(' ');
var source = 'بِسْمِ ٱللَّهِ ٱلرَّحْمَٰنِ ٱلرَّحِيمِ'.split(' ');
for(var b=0; b<source.length; b++) {
for(var c=0; c<keyword.length; c++) {
if(keyword[c]==removeDhabt(source[b])) source[b] = '<red>'+source[b]+'</red>';
}
}
$(target).html(source);
function removeDhabt(s) {
return s.replace(/ِ/g,'').replace(/ُ/g,'').replace(/ٓ/g,'').replace(/ٰ/g,'').replace(/ْ/g,'').replace(/ٌ/g,'').replace(/ٍ/g,'').replace(/ً/g,'').replace(/ّ/g,'').replace(/َ/g,'');
}
a wynik:
Potem Split, pętli i porównania dla każdego znaku, ale wynik jest śmieci:
Potem znalazłem stolarz o zerowej szerokości tutaj: Partially colored Arabic word in HTML i po wdrożeniu technologii nique, wynik końcowy jeszcze nie w 100% dokładne:
Here're moje ostatnie kody i trzeba pomóc wypolerować lub rada:
var keyword = removeDhabt('بِسْمِ ٱلرحمن ٱلرحيم ملك').split(' ');
var source = 'بِسْمِ ٱللَّهِ ٱلرَّحْمَٰنِ ٱلرَّحِيمِ'.split(' ');
for(var b=0; b<source.length; b++) {
for(var c=0; c<keyword.length; c++) {
if(keyword[c]==removeDhabt(source[b])) {
var newSource = source[b].split('');
var e = 0;
for(var d=0; d<keyword[c].length; d++) {
while(keyword[c][d]!=newSource[e]) e++;
newSource[e] = '<red>'+newSource[e]+'‍</red>';
}
source[b] = newSource.join('');
}
}
}
$(target).html(source);
function removeDhabt(s) {
return s.replace(/ِ/g,'').replace(/ُ/g,'').replace(/ٓ/g,'').replace(/ٰ/g,'').replace(/ْ/g,'').replace(/ٌ/g,'').replace(/ٍ/g,'').replace(/ً/g,'').replace(/ّ/g,'').replace(/َ/g,'');
}
Thx za sugestię poprawy mojego pręta do wymiany. – Coisox