我想逐行读取一个String。然后把它放回一个字符串
unlines.map function.lines
现在我想转换Line中的任何单词。
这个*是我要转换的句子的一个例子。
"是一个例子"被*包围,所以这个String将使用emphasis标签转换为斜体。我该怎么写这个代码?代码已经逐行读取字符串。所以现在我想在符合条件的情况下在Line中转换一个String。
由于
答案 0 :(得分:1)
第一个计算是2 * 5,第二个计算是3 * 7,所以要处理它。
中间的文字是否应以粗体显示?可能不是用户的意图,但如果您解释规范字面 ...
有原因吗
convertToHTML :: String -> String
convertToHTML [] = [] --prevents calling head on empty line
convertToHTML x
| doubleHash x == True = "<h2>" ++ drop 2 x ++ "</h2>"
| head x == '#' = "<h1>" ++ tail x ++ "</h1>"
| x == "---" = "<hr/>"
| otherwise = x
而不仅仅是
convertToHTML :: String -> String
convertToHTML cs0 =
case cs0 of
('#':'#':cs) -> "<h2>" ++ cs ++ "</h2>" -- Swapped now.
( '#':cs) -> "<h1>" ++ cs ++ "</h1>"
"---" -> "<hr/>"
_ -> cs0
哪个不需要任何辅助功能? (并且不需要head
。)
您的实际问题是什么?如何处理明星加粗?这样的事情怎么样?
not_bold :: String -> String
not_bold ('*':cs) -> "<b>" ++ bold cs
not_bold ( c:cs) -> c : not_bold cs
not_bold ( []) -> []
bold :: String -> String
bold ('*':cs) -> "</b>" ++ not_bold cs
bold ( c:cs) -> c : bold cs
bold ( []) -> error "unterminated bold section"