In Haskell, how can I replace an ASCII character sub-string in a ByteString?

bytestring, haskell

Solution

The string must be converted into a `ByteString` using `pack`.

If the string is a string literal, you can use the `OverloadedStrings` extension. This will convert automatically the string literal into a `ByteString`.

Problem

In Haskell, how can I replace an ASCII character sub-string in a `ByteString`? How can I use function `replace` in `Data.ByteString.Search` using character strings as arguments? Are there other ways to perform sub-string replacement in a `ByteString`? For example, would it make sense to convert the `ByteString` to a `String`, perform the string substitution using the `String`, and then convert the result back to a `ByteString`?

Original source