चार डेटा-प्रकार के लिए, मैं कैसे निर्दिष्ट करूं कि मैं अंग्रेजी के बजाए तुर्की के बजाय मैं लोअर और टॉपर फ़ंक्शंस के लिए तुर्की का उपयोग करना चाहता हूं?हास्केल, चार, यूनिकोड, और तुर्की
उत्तर
पाठ और पाठ-आईसीयू पैकेज
2011 से, आपका सर्वश्रेष्ठ दांव text पैकेज का उपयोग करने के लिए है, और the Text ICU package की toLower
समारोह है, जो Char
संचालन के लिए कोई स्थान द्वारा parameterized का समर्थन करता है,
this example से:
import Data.Text (pack, unpack)
import Data.Text.ICU (LocaleName(Locale), toLower)
main = do
let trLocale = Locale "tr-TR"
upStr = "ÇIİĞÖŞÜ"
lowStr = unpack $ toLower trLocale $ pack upStr
putStrLn $ "toLower " ++ upStr ++ " gives " ++ lowStr
इस चल रहा है:
+०१२३५१६४१०६१> toLower ÇIİĞÖŞÜ gives çıiğöşü
जबकि यह उदाहरण String
के बीच परिवर्तित हो जाता है, तो आप डेटा को text
प्रारूप में भी छोड़ सकते हैं।
शायद अपना लोकेल सेट करने का प्रयास करें? सुनिश्चित नहीं है
लोकेल का डिफ़ॉल्ट 'Data.har' लाइब्रेरी पर कोई प्रभाव नहीं पड़ता है। – grddev
लोकेल हालांकि 'Data.Text.ICU' पैकेज को प्रभावित करता है। –
Data.Char
हास्केल में लाइब्रेरी लोकेल निर्भर नहीं है। यह सभी यूनिकोड पात्रों के लिए काम करता है, लेकिन शायद आप जिस तरह से उम्मीद करेंगे उसमें नहीं। the corresponding Unicode chart में आप "बिंदीदार"/"dotless" i के लिए मैपिंग देख सकते हैं।
toUpper 'i'
=>'I'
toUpper 'ı'
=>'I'
toLower 'I'
=>'i'
toLower 'İ'
=>'i'
इस प्रकार, यह स्पष्ट है कि दो रूपांतरण के न पूर्ववत किया जा सकता । यदि आप तुर्की पात्रों के उलटा संचालन चाहते हैं, तो ऐसा लगता है कि आपको या तो सी-लाइब्रेरी का उपयोग करना होगा या अपना खुद का रोल करना होगा।
अद्यतन:Haskell 98 report यह काफी स्पष्ट करता है, जबकि Haskell 2010 report केवल का कहना है कि Char
यूनिकोड वर्ण से मेल खाती है, और के रूप में स्पष्ट रूप से toLower
और toUpper
के शब्दों नहीं परिभाषित करता है।
'toLower' I'' को एक dotless 'i' देना चाहिए। –
@ एलेक्सेंड्रे: मैंने दस्तावेज किया कि हास्केल कैसे काम करता है, और क्या (लिंक) यूनिकोड विनिर्देश कहता है। यदि आप अन्य व्यवहार चाहते हैं, तो आपको अपना खुद का कार्यान्वयन करने की आवश्यकता है (जैसा कि जॉकवे के जवाब में)। – grddev
प्रोग्रामिंग का एक सरल बात:
import qualified Data.Char as Char
toLower 'I' = 'ı'
toLower x = Char.toLower x
फिर
toLower <$> "I AM LOWERCASE" == "ı am lowercase"
क्या आप वास्तव में मुझे बता रहे हैं कि मुझे अंतर्राष्ट्रीयकरण का समर्थन करने के लिए Char.toLower को कॉल करने वाली प्रत्येक लाइब्रेरी को हैक करना है? –
@ जोनाथन: हां, क्योंकि हास्केल विनिर्देश केवल यूनिकोड मानक का पालन करने के लिए कहता है, जो मैंने ऊपर दिए गए नियम प्रदान करता है। इस प्रकार 'Char.toLower' का उपयोग करने वाली कोई भी लाइब्रेरी अंतर्राष्ट्रीयकरण के लिए तैयार नहीं है। – grddev
@ जोनाथन एलन: यदि आप मानक यूनिकोड व्यवहार नहीं चाहते हैं, तो नहीं, आप यूनिकोड मानक का पालन करने वाले पुस्तकालयों का उपयोग नहीं कर सकते हैं। यह दुर्भाग्यपूर्ण है, लेकिन बहुत स्पष्ट रूप से ऐसा है। – Chuck
आप this post जाँच कर सकते हैं, पाठ लाइब्रेरी का उपयोग कर।
- 1. ओरिएंट डीबी को यूनिकोड, तुर्की और enums
- 2. डेल्फी 200 + यूनिकोड + चार आकार
- 3. हास्केल int फ्लोट और चार फ्लोट करने के लिए int
- 4. तुर्की टेस्ट क्या है?
- 5. तुर्की और अंग्रेजी लोकेल सेट करना: तुर्की वर्णों को लैटिन समकक्षों का अनुवाद करें
- 6. जावा - तुर्की या अन्य महीनों
- 7. चार और चार के बीच अंतर [1]
- 8. जावा - निरुपित चार करने के लिए यूनिकोड apostrophe
- 9. हास्केल में [चार] आधारित आउटपुट की तुलना में [चार] आधारित इनपुट इतना धीमा क्यों है?
- 10. जावडोक और टिप्पणियों में यूनिकोड?
- 11. चार ** और संकेत
- 12. एसक्यूएल चार और सी #
- 13. चार * पी, और स्कैनफ़
- 14. DllImport और चार *
- 15. हास्केल में स्ट्रिंग/चार के लिए शो विधि ओवरराइड करें
- 16. हास्केल
- 17. सी चार
- 18. तुर्की चरित्र जबकि अभिव्यक्ति की तरह
- 19. पाते हैं और (/ आर/n /), चार (10), यूनिकोड प्रतिनिधित्व का उपयोग कर गूगल स्प्रैडशीट
- 20. सी चार से चार *
- 21. सी चार को चार *
- 22. एक्सएमएल में यूनिकोड की ओर हास्केल का रवैया क्या है?
- 23. चार सरणी वी.एस. चार *
- 24. जावास्क्रिप्ट मैच और यूनिकोड
- 25. सी ++ यूनिकोड और एसटीएल
- 26. पायथन: यूनिकोड और ElementTree.parse
- 27. यूनिकोड- VARCHAR और NVARCHAR
- 28. रेगेक्स और यूनिकोड
- 29. अजगर और यूनिकोड
- 30. जीसीसी, यूनिकोड और __FUNCTION__
पसंदीदा। डॉटलेस I मुद्दों के कारण तुर्की मुश्किल है। यह ऐसे कार्यों के लिए सबसे अच्छा परीक्षण-मामला है। –
मोनैड को समझना यूनिकोड को सही तरीके से संभालने की तुलना में एक कैकवॉक है। –
@Alex: तुर्की? जर्मन के मल्टी-अक्षर अपरकेस ß -> एसएस और ग्रीक के संदर्भ-निर्भर लोअरकेस Σ -> σ/ς का उल्लेख नहीं करना है। – kennytm