String 如何在Haskell中用另一个字符串替换字符串的子字符串,而不使用诸如MissingH之类的外部库?
我想在Haskell中将子字符串替换为字符串,而不使用外部库,如果可能的话,还可以使用良好的性能 我考虑过使用replace函数,但我不想将整个程序移植到使用String 如何在Haskell中用另一个字符串替换字符串的子字符串,而不使用诸如MissingH之类的外部库?,string,haskell,substring,String,Haskell,Substring,我想在Haskell中将子字符串替换为字符串,而不使用外部库,如果可能的话,还可以使用良好的性能 我考虑过使用replace函数,但我不想将整个程序移植到使用文本类型而不是字符串。将字符串打包为文本值,然后替换我想要的内容,然后将该文本值解包为字符串会不会在很多字符串上变慢 试试这个(未测试): 但一般来说,将程序切换为使用文本s而不是字符串s会提高性能。以下是我的解决方案 import Data.List (intercalate) import Data.List.Split (splitO
文本
类型而不是字符串
。将字符串
打包为文本
值,然后替换我想要的内容,然后将该文本值解包为字符串
会不会在很多字符串
上变慢 试试这个(未测试):
但一般来说,将程序切换为使用文本
s而不是字符串
s会提高性能。以下是我的解决方案
import Data.List (intercalate)
import Data.List.Split (splitOn)
replace from to = intercalate to . splitOn from
范例
replace "squirrel" "platypus" "Daddy, I want a squirrel !"
爸爸,我想要一只鸭嘴兽 对于“良好性能”的许多解释,您需要将
字符串
替换为文本
。将整个程序移植为使用文本
而不是字符串
不太可能是困难的,只是单调乏味。有些情况下,API使用String
s而不选择使用Text
/ByteString
,但在大多数情况下,这只是在一个位置更改类型,然后更正在其他位置出现的类型错误。如果要替换Data.Text
,请使用ok,我要把我的程序移植到文本类型,但是我怎样才能把文件读成文本而不是字符串呢?没有类似于使用ByTestRing的函数。我只是将字符串转换为文本类型吗?@nils8950没有用于此的函数@汤马斯·杜布森谢谢!!不知什么原因,我没有找到。@nils8950可能是因为你没有使用hoogle
或grep
!至少从80年代起,眼球一直是劣质工具;-)
replace "squirrel" "platypus" "Daddy, I want a squirrel !"