Haskell Language
Data.Text
खोज…
टिप्पणियों
हास्केल के मानक String प्रकार के लिए Text एक अधिक कुशल विकल्प है। String को हस्केल रिपोर्ट के अनुसार मानक प्रस्तावना में पात्रों की एक सूची के रूप में परिभाषित किया गया है:
type String = [Char]
Text को यूनिकोड वर्णों के एक पैक्ड सरणी के रूप में दर्शाया गया है। यह समान है कि अधिकांश उच्च-स्तरीय भाषाएं स्ट्रिंग का प्रतिनिधित्व कैसे करती हैं, और सूची संस्करण की तुलना में बहुत बेहतर समय और स्थान दक्षता देती है।
सभी उत्पादन उपयोग के लिए String पर Text को प्राथमिकता दी जानी चाहिए। एक उल्लेखनीय अपवाद एक पुस्तकालय पर निर्भर करता है जिसमें String एपीआई है, लेकिन उस मामले में भी पुस्तकालय के साथ इंटरफेस करने से पहले आंतरिक रूप से Text का उपयोग करने और String परिवर्तित करने का लाभ हो सकता है।
इस विषय के सभी उदाहरण OverloadedStrings भाषा एक्सटेंशन का उपयोग करते हैं ।
पाठ का साहित्य
OverloadedStrings भाषा विस्तार Text मानों के लिए सामान्य स्ट्रिंग शाब्दिक का उपयोग करने की अनुमति देता है।
{-# LANGUAGE OverloadedStrings #-}
import qualified Data.Text as T
myText :: T.Text
myText = "overloaded"
धारीदार व्हाट्सएप
{-# LANGUAGE OverloadedStrings #-}
import qualified Data.Text as T
myText :: T.Text
myText = "\n\r\t leading and trailing whitespace \t\r\n"
strip Text मूल्य के प्रारंभ और अंत से व्हाट्सएप को हटा देती है।
ghci> T.strip myText
"leading and trailing whitespace"
stripStart शुरू से ही stripStart को हटाता है।
ghci> T.stripStart myText
"leading and trailing whitespace \t\r\n"
stripEnd एंड केवल stripEnd को हटाता है।
ghci> T.stripEnd myText
"\n\r\t leading and trailing whitespace"
व्हाट्सएप, या अन्य वर्णों को बीच से हटाने के लिए filter का उपयोग किया जा सकता है।
ghci> T.filter /=' ' "spaces in the middle of a text string"
"spacesinthemiddleofatextstring"
स्प्लिट टेक्स्ट वैल्यू
{-# LANGUAGE OverloadedStrings #-}
import qualified Data.Text as T
myText :: T.Text
myText = "mississippi"
splitOn एक टूट जाता है Text की एक सूची में ऊपर Texts सबस्ट्रिंग की घटनाओं पर।
ghci> T.splitOn "ss" myText
["mi","i","ippi"]
splitOn का उल्टा होता है intercalate ।
ghci> intercalate "ss" (splitOn "ss" "mississippi")
"mississippi"
split एक Text मूल्य को एक बूलियन विधेय को संतुष्ट करने वाले पात्रों पर विखंडू में तोड़ता है।
ghci> T.split (== 'i') myText
["m","ss","ss","pp",""]
एन्कोडिंग और डिकोडिंग टेक्स्ट
यूनिकोड एनकोडिंग की एक किस्म के लिए एन्कोडिंग और डिकोडिंग कार्य Data.Text.Encoding मॉड्यूल में पाए जा सकते हैं।
ghci> import Data.Text.Encoding
ghci> decodeUtf8 (encodeUtf8 "my text")
"my text"
ध्यान दें कि decodeUtf8 अमान्य इनपुट पर एक अपवाद फेंक देगा। यदि आप अमान्य UTF-8 को स्वयं संभालना चाहते हैं, तो decodeUtf8With उपयोग decodeUtf8With ।
ghci> decodeUtf8With (\errorDescription input -> Nothing) messyOutsideData
यह जाँचना कि क्या एक पाठ दूसरे पाठ का विकल्प है
ghci> :set -XOverloadedStrings
ghci> import Data.Text as T
isInfixOf :: Text -> Text -> Bool चेक करता है कि क्या एक Text दूसरे Text भीतर कहीं भी समाहित है।
ghci> "rum" `T.isInfixOf` "crumble"
True
isPrefixOf :: Text -> Text -> Bool चेक करता है कि क्या एक Text दूसरे Text की शुरुआत में दिखाई देता है।
ghci> "crumb" `T.isPrefixOf` "crumble"
True
isSuffixOf :: Text -> Text -> Bool चेक करता है कि कोई Text दूसरे Text के अंत में दिखाई देता है या नहीं।
ghci> "rumble" `T.isSuffixOf` "crumble"
True
अनुक्रमण पाठ
{-# LANGUAGE OverloadedStrings #-}
import qualified Data.Text as T
myText :: T.Text
myText = "mississippi"
index फ़ंक्शन द्वारा विशिष्ट सूचकांकों पर वर्ण लौटाए जा सकते हैं।
ghci> T.index myText 2
's'
findIndex फ़ंक्शन प्रकार (Char -> Bool) और पाठ का एक फ़ंक्शन लेता है और किसी दिए गए स्ट्रिंग की पहली घटना के सूचकांक को लौटाता है या ऐसा नहीं होने पर कुछ भी नहीं।
ghci> T.findIndex ('s'==) myText
Just 2
ghci> T.findIndex ('c'==) myText
Nothing
count फ़ंक्शन किसी अन्य Text भीतर क्वेरी Text होने की संख्या को लौटाता है।
ghci> count ("miss"::T.Text) myText
1