Haskell:使用 Data.Text.replace 仅替换第一次出现的文本值

标签 haskell

如何以最有效的方式仅替换 Haskell 中 Text 值中第一次出现的“子字符串”(实际上是 Data.Text.Text)?

最佳答案

您可以 breakOn 子串,

breakOn :: Text -> Text -> (Text, Text)

拆分 Text在模式第一次出现时分成两部分,然后替换第二个组件开头的子字符串:
replaceOne :: Text -> Text -> Text -> Text
replaceOne pattern substitution text
  | T.null back = text    -- pattern doesn't occur
  | otherwise = T.concat [front, substitution, T.drop (T.length pattern) back] 
    where
      (front, back) = breakOn pattern text

关于Haskell:使用 Data.Text.replace 仅替换第一次出现的文本值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14922070/

相关文章:

haskell - 了解此 Haskell 程序的内存使用情况

quickcheck - 使用 QuickCheck 生成 Int 列表的列表

haskell - 在 Hackage 上寻找反向依赖

以运算符作为参数的 Haskell 函数应用语法

Haskell 实例包装 []

haskell - react 香蕉 : Alternate buttons events

haskell - 是否有一种通用方法可以将失败 monad 上的免费 comonad 分解为 “values stream and final error” ?

haskell - 在类型类中使用代理

Haskell 编译错误

haskell - unsafeVacous、#. 和 .# 何时不安全?