返回 Haskell 中字符串的第一行

2023-12-14

我有一个相当简单的问题,但我很困惑。基本上,我只需要编写一个函数,它接受一个字符串,将其分成几行,接受第一行并以格式正确的 HTML 标题标记返回第一行。

老实说,我只是不知道从哪里开始。

任何事情都会有所帮助。

我确实有代码,但这只是我用来对输入文件进行转换的一些基本函数:

    convertToHTML :: String -> String
    convertToHTML cs0 = 
          case cs0 of
                ('#' : '#' : cs) -> "<h2>" ++ cs ++ "</h2>"
                ('#' : cs)       -> "<h1>" ++ cs ++ "</h1>"
                 "---"            -> "<hr/>"
                  _                -> cs0

    convertToHTML' :: String -> String
    convertToHTML' = unlines.map (convertToHTML.firstLine.escapeChars).lines

    convertToWords :: String -> String
    convertToWords cs1 =
                case cs1 of
                      ('*' : '*' : cs) -> "<strong>" ++ cs ++ "</strong>"
                      ('_' : '_' : cs) -> "<strong>" ++ cs ++ "</strong>"
                      ('*' : cs)       -> "<em>" ++ init cs ++ "</em>"
                      ('_' : cs)       -> "<em>" ++ init cs ++ "</em>"
                      _                -> cs1

    convertToWords' :: String -> String
    convertToWords' = unwords.map convertToWords.words

这些是我从 main 调用的基本函数,它读取输入文件,调用函数并生成输出文件。

    main = do
          args <- getArgs -- command line args
          let (infile,outfile) = (\(x:y:ys)->(x,y)) args
          putStrLn $ "Input file:  " ++ infile
          putStrLn $ "Output file: " ++ outfile
          contents <- readFile infile      
          writeFile outfile $ deleteSymbol $ convertToWords' $ convertToHTML' $ contents

希望您能了解代码的要点。


要检索第一行,您可以简单地使用:

firstLine :: String -> String
firstLine = head . lines

那么你可以使用:

firstLineInTitleTags :: String -> String
firstLineInTitleTags s = concat ["<title>", firstLine s, "</title>"]

or:

firstLineInTitleTags :: String -> String
firstLineInTitleTags = ("<title>"++) . (++"</title>") . firstLine
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

返回 Haskell 中字符串的第一行 的相关文章

随机推荐

  • Bash -eq 和 ==,有什么区别?

    为什么这有效 Output tail lines 1 fileDiProva INFO Output OK if Output OK then echo OK else echo No Match fi 这不是吗 Output tail l
  • 克服不同端口的最大持续连接数?

    继从浏览器中的最大并行 http 连接数 浏览器每个主机只能有几个连接 我知道可以使用子域来解决这个问题 但是我可以通过对同一主机使用不同的端口来解决这个问题吗 那么以下内容是否允许浏览器将其连接增加三倍 假设每个端口上都有某些东西正在侦听
  • 哪些大小是普通加载并存储到 CUDA 原子中的全局内存?

    如果满足以下条件 则 CUDA 中对全局内存的一般读取和写入是原子的 它是一个4字节指令 我认为是的 它是8字节还是16字节指令 我认为是的 至少在开普勒和费米通用 4 字节读取和写入全局存储器原子上 Warp 级别或 8 16 字节指令原
  • 如何从以 latin1 编码的结果集中以 UTF-8 编码字符串

    我正在编写一个应用程序 使用 UTF 8 需要读 写外部应用程序的第二个数据库 使用 ISO 8859 1 try data in latin1 String s rs getString sAddrNameF System out pri
  • 如何从指定号码(不带名称)中仅提取号码?

    我正在寻找的只是价值B1 newx 线性模型系数 不是名字 我只想要 0 5 的值 我不想要 newx 这个名字 newx lt c 0 5 1 5 2 5 newy lt c 2 3 4 out lt lm newy newx out好像
  • 在 emgucv 上寻找运动检测功能

    我是 emgu 简历的新手 我正在尝试找到一个进行运动检测的代码 我试过这个 CvInvoke cvAbsDiff frame backgroundImage BgDifference 但我有照明问题 我想把有运动的像素变成白色 然后在只有
  • 找不到类:com.google.common.collect.Lists

    I am attaching a screen shot of the problem that I am facing with Renjin Engine Please see the image below I m not able
  • 我需要多少个进程来监视两个信号?

    我是一名 vhdl 初学者 需要帮助解决我的问题 我有两个需要监控的信号 一个是 CHECK 另一个是 OK 每次我要求检查时 我都应该得到好的结果 高或低 我需要连续监测6个连续的CHECK脉冲 并计数OK 如果我有 6 OK 低 那么我
  • Flutter Firebase Auth / Google_sign_in 无法登录,状态代码=CANCELED

    这是我的 pubspec yaml 我正在使用颤振 dependencies flutter sdk flutter cupertino icons 0 1 2 shared preferences 0 4 2 json serializa
  • 使用 PHP 从 pdf 中提取内容

    您能告诉我如何使用 PHP 从 PDF 文档中提取内容吗 格式化是我在这里面临的主要问题 因此 如果有一些方法可以提取相同格式的内容并将其显示在在线文本编辑器上 请告诉我 Thanks 看一下XPDF 我想你可以做 text shell e
  • 防止WebSQL数据库中的SQL注入? (如何处理数据中的引号?)

    我目前正在将 mysql 数据库的 xml 导出导入到 websql 数据库中 以用于在线移动体验 一切工作正常 直到我插入的任何字符串中出现双引号 通常 在 PHP 中我会在插入时使用类似 mysql real escape string
  • 通过网络发送数据并以倍频程绘图

    我正在研究一个机器人 我的目标是绘制机器人的状态 目前 我的工作流程是这样的 启动程序 重定向文件中的输出 robot bash rosrun explo explo node gt states txt 将文件发送到我的本地计算机 rob
  • 在 R 中将大向量分割成区间[重复]

    这个问题在这里已经有答案了 我对 R 不太擅长 我运行了这个循环 得到了一个包含 11 303 044 行的巨大结果向量 我有另一个由维度为 1681 行的循环产生的向量 我希望运行一个chisq test来比较它们的分布 但由于它们的长度
  • jQuery UI 可拖动/可排序/可放置在达到可放置限制时禁用放置

    JS Bin 演示 Task 我正在使用 jQuery UI 创建事件调度程序 事件有一定的长度 以分钟为单位 并且可以将它们拖到不同的日期 每个日期都有自己的最大长度 以分钟为单位 在示例中 每天的最大长度为 480 分钟 并且不应允许插
  • Electron 带有节点通知程序显示 Windows 10 通知

    我正在尝试制作一个简单的应用程序 单击按钮时应显示通知 问题是通知没有显示 但 console logs 正在显示 通知应该在开发模式下工作吗 意思是只是运行electron 而且我不必构建和安装该应用程序 Windows操作系统 版本 W
  • 如何增加 FOR 循环语句中的 FOR 循环值?

    我想知道如何增加 FOR 循环语句中的值 这是我的代码 function Check var MemoryData Array of byte MemorySignature Array of byte Position integer b
  • 拟合多峰分布

    假设我们有两个正态分布的线性组合 我认为人们会将结果称为多模态分布 import numpy as np import matplotlib pyplot as plt from scipy stats import norm ls np
  • 查询中的 Linq Convert.ToInt32

    我有一些代码 from AspNetUsers in db AspNetUsers join UserDetails in db UserDetails on new Id Convert ToInt32 AspNetUsers UserD
  • Python 多处理:进程无法启动

    我是新来的multiprocessing在Python 2 7 中 我尝试运行以下代码 from time import sleep from multiprocessing import Process import multiproce
  • 返回 Haskell 中字符串的第一行

    我有一个相当简单的问题 但我很困惑 基本上 我只需要编写一个函数 它接受一个字符串 将其分成几行 接受第一行并以格式正确的 HTML 标题标记返回第一行 老实说 我只是不知道从哪里开始 任何事情都会有所帮助 我确实有代码 但这只是我用来对输