2011-03-07 14 views
8

गतिशील हटाने कैसे अरबी विशेषक मैं एक ebook "chm" को डिजाइन कर रहा हूँ और बहु ​​HTML पृष्ठों अरबी पाठ लेकिन कुछ समय के खोज इंजन क्योंकि इसके अरबी शब्द से कुछ पर प्रकाश डाला चाहते शामिल है diacritic तो क्या यह संभव है जब पृष्ठ लोड जावास्क्रिप्ट कार्यों का उपयोग करने के लिए जो अरबी diacritic पाठ पट्टी होगा ?? लेकिन विकल्प होना चाहिए फिर से सक्षम करने के लिए तो मैं शारीरिक रूप से लेकिन अस्थायी एचटीएमएल से निकालने के लिए,जावास्क्रिप्ट + अरबी पाठ विशेषक हटाने गतिशील

बात मैं जहां शुरू करने के लिए पता नहीं है और सही समारोह

उपयोग करने के लिए क्या है नहीं करना चाहती

धन्यवाद

:) उदाहरण

लिए
Text : الْحَمْدُ لِلَّهِ رَبِّ الْعَالَمِينَ 
converted to : الحمد لله رب العالمين 

उत्तर

0

This site जावास्क्रिप्ट यूनिकोड सामान्य जो आप क्या प्रयास कर रहे हैं करने के लिए इस्तेमाल किया जा सकता के लिए कुछ दिनचर्या है। अगर कुछ और नहीं तो यह एक अच्छा प्रारंभिक बिंदु प्रदान कर सकता है।

यदि आप डेटा को प्रीप्रोसेस कर सकते हैं, तो पाइथन के पास इस तरह के परिवर्तनों के आसान काम करने के लिए अच्छी यूनिकोड रूटीन है। यदि आप एक अलग इंडेक्स फ़ाइल सकता है जो अपने CHM में तो विलय हो produe करने के लिए अपने CHM फ़ाइल preprocess कर सकते हैं यह एक अच्छा विकल्प हो सकता है:

import unicodedata 

def _strip(text): 
    return ''.join([c for c in unicodedata.normalize('NFD', text) \ 
     if unicodedata.category(c) != 'Mn']) 

composed = u'\xcd\xf1\u0163\u0115\u0155\u0148\u0101\u0163\u0129\u014d' \ 
    u'\u0146\u0105\u013c\u012d\u017e\u0119' 

_strip(composed) 
'Internationalize' 
+0

धन्यवाद मैं आपकी जानकारी –

6

इस

Text : الْحَمْدُ لِلَّهِ رَبِّ الْعَالَمِينَ 
converted to : الحمد لله رب العالمين 

http://www.suhailkaleem.com/2009/08/26/remove-diacritics-from-arabic-text-quran/

प्रयास करें हालांकि कोड # जावास्क्रिप्ट नहीं है। अभी भी यह पता लगाने की कोशिश कर रहा है कि जावास्क्रिप्ट

संपादित करें: जाहिर है यह जावास्क्रिप्ट में बहुत आसान है। Diacratics अलग "अक्षर" के रूप में संग्रहीत किया जाता है और वे आसानी से हटाया जा सकता है।

var CHARCODE_SHADDA = 1617; 
var CHARCODE_SUKOON = 1618; 
var CHARCODE_SUPERSCRIPT_ALIF = 1648; 
var CHARCODE_TATWEEL = 1600; 
var CHARCODE_ALIF = 1575; 

function isCharTashkeel(letter) 
{ 
    if (typeof(letter) == "undefined" || letter == null) 
     return false; 

    var code = letter.charCodeAt(0); 
    //1648 - superscript alif 
    //1619 - madd: ~ 
    return (code == CHARCODE_TATWEEL || code == CHARCODE_SUPERSCRIPT_ALIF || code >= 1612 && code <= 1631); //tashkeel 
} 

function stripTashkeel(input) 
{ 
    var output = ""; 
    //todo consider using a stringbuilder to improve performance 
    for (var i = 0; i < input.length; i++) 
    { 
    var letter = input.charAt(i); 
    if (!isCharTashkeel(letter)) //tashkeel 
     output += letter;         
    } 


return output;     
} 

संपादित करें: यहाँ एक और तरीका BuckData http://qurandev.github.com/

का उपयोग कर

लाभ बक कम बैंडविड्थ का उपयोग करता है जावास्क्रिप्ट में यह करने के लिए है, यू 1 शॉट में के माध्यम से पूरे बक कुरान पाठ खोज सकते हैं। अरबी खोज की तुलना में अंतर्ज्ञानी अरबी और अरबी से बक को एक साधारण जेएस कॉल है। लाइव नमूना के साथ यहां चलाएं: http://jsfiddle.net/BrxJP/ आप कुछ मिलीसेक्स में बक पाठ से सभी स्वरों को बाहर निकाल सकते हैं। यह क्यों? आप जावास्क्रिप्ट में खोज सकते हैं, टास्केल मतभेदों को अनदेखा कर सकते हैं (फाथाह, दम्मह, कसरा)। जो अधिक हिट की ओर जाता है। Regex + buck टेक्स्ट भयानक अनुकूलन का कारण बन सकता है। सभी खोजों को स्थानीय रूप से चलाया जा सकता है। http://qurandev.appspot.com डेटा कैसे उत्पन्न हुआ? का उपयोग करते हुए सिर्फ एक-से-एक मानचित्रण: http://corpus.quran.com/java/buckwalter.jsp

+0

समीर को alook लगेगा कुरान को यह केवल विशिष्ट या क्या यह सभी अरबी पाठ पर भी लागू है? – abbood

+0

abbood मुझे लगता है कि यह सभी अरबी पाठ पर लागू होता है – Sameer

1

यहाँ एक जावास्क्रिप्ट कोड है कि दूर करने अरबी विशेषक लगभग हर समय संभाल कर सकते हैं है।

var arabicNormChar = { 
    'ك': 'ک', 'ﻷ': 'لا', 'ؤ': 'و', 'ى': 'ی', 'ي': 'ی', 'ئ': 'ی', 'أ': 'ا', 'إ': 'ا', 'آ': 'ا', 'ٱ': 'ا', 'ٳ': 'ا', 'ة': 'ه', 'ء': '', 'ِ': '', 'ْ': '', 'ُ': '', 'َ': '', 'ّ': '', 'ٍ': '', 'ً': '', 'ٌ': '', 'ٓ': '', 'ٰ': '', 'ٔ': '', '�': '' 
} 

var simplifyArabic = function (str) { 
    return str.replace(/[^\u0000-\u007E]/g, function(a){ 
     var retval = arabicNormChar[a] 
     if (retval == undefined) {retval = a} 
     return retval; 
    }).normalize('NFKD').toLowerCase(); 
} 

//now you can use simplifyArabic(str) on Arabic strings to remove the diacritics 

नोट: यदि आप अपनी प्राथमिकताओं को arabicNormChar भी पार कर जाते।

2

मैं इस समारोह जो मिश्रित अरबी और अंग्रेजी अक्षर के साथ तार संभालती है, (विशेषक सहित) विशेष वर्ण को दूर करने और s 'ه में s' सब ة परिवर्तित करने जैसे कुछ अरबी वर्ण सामान्य लिखा था।

normalize_text = function(text) { 
 

 
    //remove special characters 
 
    text = text.replace(/([^\u0621-\u063A\u0641-\u064A\u0660-\u0669a-zA-Z 0-9])/g, ''); 
 

 
    //normalize Arabic 
 
    text = text.replace(/(آ|إ|أ)/g, 'ا'); 
 
    text = text.replace(/(ة)/g, 'ه'); 
 
    text = text.replace(/(ئ|ؤ)/g, 'ء') 
 
    text = text.replace(/(ى)/g, 'ي'); 
 

 
    //convert arabic numerals to english counterparts. 
 
    var starter = 0x660; 
 
    for (var i = 0; i < 10; i++) { 
 
    text.replace(String.fromCharCode(starter + i), String.fromCharCode(48 + i)); 
 
    } 
 

 
    return text; 
 
}
<input value="الْحَمْدُ لِلَّهِ رَبِّ الْعَالَمِينَ" type="text" id="input"> 
 
<button onclick="document.getElementById('input').value = normalize_text(document.getElementById('input').value)">Normalize</button>

0

उपयोग इस regex सभी tashkeel को पकड़ने के लिए

[-ؚٟ]

संबंधित मुद्दे