स्ट्रिंग वर्ग अंगूर पर आधारित है?


9

मैं सोच रहा हूं कि हमारे पास कुछ स्ट्रिंग कक्षाएं क्यों नहीं हैं जो कोड बिंदुओं या वर्णों के बजाय यूनिकोड ग्रेफेम क्लस्टर की एक स्ट्रिंग का प्रतिनिधित्व करती हैं। यह मुझे लगता है कि अधिकांश अनुप्रयोगों में प्रोग्रामर के लिए अंगूर के घटकों को एक्सेस करना आसान होगा, जब आवश्यक हो तो उन्हें कोड बिंदुओं से व्यवस्थित करना होगा, जो कि आवश्यक रूप से प्रकट होता है, भले ही "मध्य-ग्रेपेमी" में एक स्ट्रिंग को तोड़ने से बचें। (कम से कम सिद्धांत में)। आंतरिक रूप से एक स्ट्रिंग वर्ग यूटीएफ -8, यूटीएफ -16 जैसे एक चर लंबाई एन्कोडिंग का उपयोग कर सकता है, या इस संदर्भ में भी यूटीएफ -32 चर लंबाई है; या उन सभी के लिए उपवर्ग लागू करें (और वैकल्पिक रूप से रन-टाइम पर विकल्प को कॉन्फ़िगर करें ताकि विभिन्न भाषाएं अपने इष्टतम एनकोड का उपयोग कर सकें)। लेकिन अगर प्रोग्रामर एक स्ट्रिंग का निरीक्षण करते समय अंगूर की इकाइयों को "देख" सकते हैं, तो ऐसा नहीं होगा '


मुझे लगता है कि थोड़ा समय बीत चुका है, और अब हमारे पास कुछ भाषाएँ हैं जो वास्तव में ऐसा करती हैं। : डी
तर्जका

जवाबों:


4

शुद्धता प्राप्त करने का सबसे अच्छा तरीका लगता है प्रोग्रामर को "स्ट्रिंग हैकिंग" करने से रोकना ... यह केवल अपने स्वयं के शब्द रैप, हायफ़नेशन, शब्द गणना, औचित्य, कर्सर आंदोलन, आदि दिनचर्या लिखने के लिए ठीक नहीं है। सभी आधुनिक यूआई फ्रेमवर्क इन दिनों यह सामान आपके लिए करेंगे।

अर्थात, आपके द्वारा आमतौर पर काम किया जाने वाला एब्सट्रैक्शन "पैराग्राफ डिस्प्ले ऑब्जेक्ट" का अधिक होता है, जैसे GTK: http://library.gnome.org/devel/pango/stable/pango-Layout-Objects.html

इसके बजाय एक अंगूर के तने की तरह, जैसे: http://library.gnome.org/devel/pango/stable/pango-Glyph-Storage.html

ग्लिफ़ की एक स्ट्रिंग प्राप्त करने के लिए आपको जानकारी की आवश्यकता है जो केवल "दृश्य" स्तर पर उपलब्ध है, इसलिए स्ट्रिंग्स के अधिकांश उपयोगों में यह जानकारी नहीं हो सकती है। उदाहरण के लिए, आपको फॉन्ट जानना होगा, क्योंकि फोंट में अलग-अलग लिगचर हो सकते हैं।

इस तरह के व्यावहारिक मामलों के अलावा, ग्लिफ़्स शायद वह नहीं हैं जो आप चाहते हैं।

कई संदर्भों में, आप उचित एपीआई यूनिकोड विशेषताओं का उपयोग करना चाहते हैं, उदाहरण के लिए इस एपीआई में दिखाया गया है: http://library.gnome.org/devel/pango/stable/pango-Text-Processing.html#PangoLog.ttr

जैसा कि आप उस संरचना से देख सकते हैं (जो यूनिकोड एल्गोरिदम को दर्शाता है) ग्लिफ सीमाओं पर विभिन्न चीजें करना चरित्र सीमाओं पर उन्हें करने से ज्यादा सही नहीं है।

ये दोनों चश्मा विभिन्न प्रकार की सीमाओं को खोजने के लिए एल्गोरिदम का वर्णन करते हैं:

टेक्स्ट प्रोसेसिंग करने में एल्गोरिदम के साथ उन सीमाओं को खोजना और फिर सीमाओं के साथ काम करना शामिल है।

यदि आप सभी भाषाओं को सही ढंग से संभालना कठिन समझते हैं, तो आपको बहुत जल्दी पता चलेगा कि आपको एक पुस्तकालय की आवश्यकता है जो पूरे पैराग्राफ को देखता है और उन्हें ठीक से संभालता है। विंडोज, मैक, लिनक्स (क्यूटी और जीटीके), और जावा सभी इसके लिए सुविधाओं के साथ आते हैं, इसके अलावा उदाहरण के लिए http://site.icu-project.org/ है।

वेब ऐप लिखते समय, दुर्भाग्य से आपको बहुत ज्यादा ब्राउज़र (शायद ओएस द्वारा मदद की गई) इस सामान को करने देना है, जहां तक ​​मुझे पता है। आप जावास्क्रिप्ट में या सर्वर की तरफ कर सकते हैं।

हो सकता है कि मैं इसका उत्तर दूंगा: प्राकृतिक भाषा पाठ पर अधिकांश स्ट्रिंग हेरफेर टूट गया है, इसलिए स्ट्रिंग वर्ग के बारे में बहुत अधिक चिंता करने की ज़रूरत नहीं है, इसके अलावा शायद उस पर कोई विधि नहीं है;;

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.