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
?
In Haskell, how can I replace an ASCII character sub-string in a ByteString?
Asked Answered
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
.
Yes, you have to convert the string arguments into
ByteString
objects, and ByteString
is an instance of the typeclass Substitution
, so it is suitable as the second argument of replace
. –
Firebreak Example to illustrate Teetoo's answer:
Prelude> :module + Data.ByteString.Char8 Data.ByteString.Search
Prelude Data.ByteString.Char8 Data.ByteString.Search> replace (pack "World") (pack "Derek") (pack "Hello, World!")
"Hello, Derek!"
Prelude Data.ByteString.Char8 Data.ByteString.Search>
© 2022 - 2024 — McMap. All rights reserved.
ByteString
objects before I pass them toreplace
? How do I generate the replacement string argument (the second argument) toreplace
? The type of this argument must be an instance ofSubstitution
. – Dragone