निम्नलिखित कोड में Data.Text.Lazy.replace
का उपयोग कर स्ट्रिंग को प्रतिस्थापित करने के तीन अलग-अलग तरीके हैं (str1
, str2
, और str3
)। उन्हें एक ही आउटपुट देना चाहिए।डेटा.Text.Lazy.replace और Data.Text.Lazy.append क्यों काम नहीं करता है?
import Data.Text.Lazy as DTL
str1 :: String
str1 = DTL.unpack $ DTL.replace key value text
where key = DTL.pack "<<name>>"
value = DTL.pack "Joyce"
text = DTL.pack "Hello, <<name>>."
str2 :: String
str2 = DTL.unpack $ DTL.replace key value text
where key = DTL.pack "<<" `DTL.append` DTL.pack "name"
`DTL.append` DTL.pack ">>"
value = DTL.pack "Joyce"
text = DTL.pack "Hello, <<name>>."
str3 :: String
str3 = DTL.unpack $ DTL.replace key value text
where key = DTL.pack $ "<<" ++ "name" ++ ">>"
value = DTL.pack "Joyce"
text = DTL.pack "Hello, <<name>>."
main :: IO()
main = do putStrLn str1
putStrLn str2
putStrLn str3
हालांकि कार्यक्रम चलाने का परिणाम है:
Hello, Joyce.
Hello, <<name>>.
Hello, Joyce.
str2 सही ढंग से काम क्यों नहीं करता है? क्या कोड में कुछ गड़बड़ है?
str2 में आप कुंजी मूल्य के लिए DTL.pack के बाद $ का उपयोग करने का प्रयास कर सकते हैं? – Ankur