5

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

4

1 回答 1

12

你可以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
于 2013-02-17T14:29:23.787 回答