5

HaskellのText値で最初に出現する「サブストリング」(実際にはData.Text.Text)のみを最も効率的な方法で置き換えるにはどうすればよいですか?

4

1 に答える 1

12

部分文字breakOn列、

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

パターンの最初の出現で を 2 つの部分に分割しText、2 番目のコンポーネントの先頭で部分文字列を置き換えます。

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 に答える