3
如何仅替换第一次出现的“substring”(实际上是Data.Text.Text)Haskell中的Text值最有效的方法?Haskell:使用Data.Text.replace替换仅第一次出现的文本值
如何仅替换第一次出现的“substring”(实际上是Data.Text.Text)Haskell中的Text值最有效的方法?Haskell:使用Data.Text.replace替换仅第一次出现的文本值
可以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
确保你不想继续调用它,因为它实际上不是增量替换字符串中文本出现的最佳方式。如果你做了很多,看看绳索数据结构或其他聪明的东西。 – copumpkin 2013-02-17 15:07:18