如何在字符串haskell中实现占位符
如何创建一个函数来打印在缺少的空格中包含占位符/变量的句子,然后接受用户输入并通过将值插入占位符来打印完整的句子 我正在尝试打印多个缺少单词的句子语句,然后用户可以选择4个不同的单词来完成句子。目标是在缺少的空格中添加变量,这些空格充当占位符,占位符将接收用户输入,并将值存储到缺少单词的变量中,然后打印完整的句子。我在“我的想法”一节中进一步解释了这一点 这句话不是。 选项: 1.完成了吗 2.完成了吗 3.等 4.等 我在想什么 我试图通过为那些没有文本的空间使用占位符来实现一些目标,在用户选择后,我可以在占位符中赋值 打印句子的函数 这句话是$a而不是$b。 其中$a和$b以及我可以稍后调用的变量/占位符 存储用户选择的单词 从第一个函数中提取句子,并从另一个函数中打印选项,然后将值放入占位符中以使句子完整。 我所做的 我的实现是以一种方式完成的,即使用用户可以选择的每个可能选项重写整个句子,然后打印与用户选择的选项匹配的句子。这并没有给我我想要的功能性方法,因为它更多的是一种硬编码方法,当使用多个句子时会变得单调乏味,每个句子都有4个选项 我的代码如何在字符串haskell中实现占位符,haskell,Haskell,如何创建一个函数来打印在缺少的空格中包含占位符/变量的句子,然后接受用户输入并通过将值插入占位符来打印完整的句子 我正在尝试打印多个缺少单词的句子语句,然后用户可以选择4个不同的单词来完成句子。目标是在缺少的空格中添加变量,这些空格充当占位符,占位符将接收用户输入,并将值存储到缺少单词的变量中,然后打印完整的句子。我在“我的想法”一节中进一步解释了这一点 这句话不是。 选项: 1.完成了吗 2.完成了吗 3.等 4.等 我在想什么 我试图通过为那些没有文本的空间使用占位符来实现一些目标,在用户选
--First Version
import Data.List
import System.IO
main :: IO()
sentences = do
putStrLn "The Cat is ______ from ______ the city \n"
putStrLn "Here are your options:"
putStrLn "A. big, nearby"
putStrLn "B. Nearby, in"
putStrLn "C: You, By"
putStrLn "D: By, Yourself"
option <- getChar
if (option == 'A' || option == 'a')
then putStrLn "The Cat is big from nearby the city"
else if (option == 'B' || option == 'b')
then putStrLn "The Cat is nearby from in the city"
else putStrLn "Error"
main = sentences
我喜欢使用字符串插值,因为它是异常安全的。然后,您可以使用Maybe的折叠Maybe替换您的if:
{-语言拟语言-}
模块主要在哪里
导入控制.Monad表单_
导入数据.chartoupper
导入数据。列表查找
导入数据,也许吧
导入Data.String.Interpolate i
导入系统.IO
句子::字符串,字符串->字符串
句子word1,word2=[i |猫{word1}来自{word2}城市\n |]
类型选择=字符、字符串、字符串
选择::[选择]
选项=['A',大,近
“B”,在附近,在
“C”,你,通过
“D”,你自己
]
presentChoice::Choice->IO
presentChoice选项,word1,word2=
putStrLn[i{option}.{word1},{word2}.]
句子=做
putStrLn$句子______
putStrLn以下是您的选择:
表单选择当前选择
选项见printf:这正是我要找的。非常感谢。这是一个最近的问题,其中有一些使用模块文本的示例代码。Printf:我注意到Printf的所有示例都是先输入值,然后再打印,而在我的示例中,我需要先打印不完整的句子,然后,获取用户输入的结果并打印整个句子。也许您可以将putStrLn$printf作为第一步来运行此句子%s而不是%s;然后,作为第二步,将此句子%s而不是%s放入putStrLn$printf。完成了。你是我一直在等待的英雄。如果你觉得这是你问题的答案,你可以接受答案。这样我们就有了好名声