簡體   English   中英

為什么Data.Text.Lazy.replace和Data.Text.Lazy.append不起作用?

[英]Why doesn't Data.Text.Lazy.replace and Data.Text.Lazy.append work?

在下面的代碼中,有三種不同的方式( str1str2str3 )使用Data.Text.Lazy.replace替換字符串。 他們應該提供相同的輸出。

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無法正常工作? 代碼有什么問題嗎?

伙計們,感謝錯誤報告。 我會調查一下,然后按照我的發現跟進。

看起來像text庫中的錯誤給我。

(如果作者沒有訪問Stack Overflow,我已經向bug追蹤器添加了一個問題 。)

這是搜索代碼中的一個錯誤:在模式的塊邊界上,在創建跳過表時省略了一個字符(井,代碼單元),因此在某些輸入上,搜索窗口移動得太遠。 我已經給Bryan發送了拉動請求。

由於您的模式由短文字組成,如果您使用優化編譯,則不會找到錯誤。 很好找。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM