在Haskell中查找字符串并为其添加数字

时间:2016-11-09 20:17:26

标签: string haskell

假设我有一个多行字符串multiStr

line 1
line 2
x.tally: 10
line 4
line 5

我怎么能写一个函数

f :: Integer -> String -> String -> String
f n lineMatcher multiStr = ...

找到以lineMatcher开头的第一个匹配行,并将n添加到其末尾的数字。

例如,在这种情况下,我们将f 5 "x.tally" multiStr评估为

line 1
line 2
x.tally: 15
line 4
line 5

1 个答案:

答案 0 :(得分:1)

我不想破坏解决这个问题的乐趣,因此我只会就如何解决这个问题给出一些建议。

首先,我希望您了解两个函数wordsunwords,其中一个用于将String拆分为[String],另一个则相反 - 即加入一个[String]将两个元素分开一个' '。你还应该知道函数linesunlines做了类似的事情 - 我希望你可以用他们的名字来猜测他们做了什么。

接下来我要尝试的是构建一个(辅助)转换函数,通过添加String来转换n。提示:函数show可能派上用场。

h :: Int -> String -> String
h n str = let m = read str
          in ...

如果您可以使用之前的辅助函数将["x.tally:", "10"]转换为["x.tally:", "15"]并将每个其他列表映射到自身,那么您几乎已经完成了,我希望您可以将我的所有建议拼接在一起你想要的功能。