<hr/> horizontal rule(水平线)

    
Markdown是一种轻量级标记语言,由John Gruber和Aaron Swartz在2004年创造,文件扩展名为*.md。通过易读易写的纯文本格式编写Markdown文件,可以方便地转换成HTML、PDF、PPT等格式。很多云笔记、代码托管等网站支持用Markdown格式写文档,也适合放在源码目录中用Git管理,例如常见的README.md项目仓库说明。 完成本题后您将立即成为Markdown的半个行家(说半个是因为还有一题)。 Markdown语法很简单,大约只有12类。V1版只需实现以下功能: 通用原则: 保留文本首、尾、中间的空格,不要删除或替换成 。 语法如果要求起始标记后接1个空格,那这个空格是语法元素,不是内容。之后到行尾才是文本内容。 例如#..标题.(为清晰用小数点代表空格)的起始标记是#.,文本内容是.标题.(文字前后的空格原样保留) 标题(heading):行首为1到6个#字符、后接一个空格,表示一至六级标题,翻译为<h1>...</h1>至<h6>...</h6>结构。 标题只允许一行(不用考虑多行)。 标题与其他结构必须由一个空行隔开。 标题内容保持原样(本次无需考虑其他格式) 水平线horizontal rule):单独一行的3个连字符---为水平线,翻译为<hr>标签。 水平线与其他结构必须由一个空行隔开。 段落(paragraph):由空行分隔的多行文本,被翻译为<p>...</p>段落结构。 段落各行内容需要按后续说明进行必要的文本修饰转换(着重、代码等)。 除末行外,段落中间的行需要追加<br>标签表示换行。 段落末行直接跟</p>结束标签。 无序列表(unordered list):以-开头,后接一个空格,后续单行文本。 - 第1组、第1项 - 第 1 组 第2项 - 第2组、第1项 转换为: <ul> <li>第1组、第1项</li> <li> 第 1 组 第2项 </li> </ul> <ul> <li>第2组、第1项</li> </ul> 连续的列表项汇集在同一组<ul>...</ul>结构中。 只需实现单级列表(本次不考虑嵌套的多级列表)。 列表文本只有一行(本次不考虑多行文本)。 列表文本内容需按后续说明进行必要的文本修饰转换(着重、代码等)。 列表与其他结构必须由一个空行隔开。 文本中可有以下修饰: 强调:被1个星号包围的文本翻译为...结构,表现为斜体。 重要:被2个星号包围的文本翻译为<strong>...</strong>结构,表现为粗体。 关键:被3个星号包围的文本翻译为<strong>...</strong>结构,表现为粗斜体。 代码:被1个反引号`包围的文本翻译为<code>...</code>结构,用等宽字体表示视为代码。 强调、重要、关键3种修饰不会嵌套(结束后才可能开始另一个修饰),但可以包含代码代码不会包含前3种修饰(因为代码中经常包含星号,比如指针等) 代码无需考虑包含反引号的情况(实际产品要考虑实现转义功能) 任务:解析Markdown基本结构,并转换为HTML。 目的:掌握Markdown常用语法;练习HTML后端生成方法。 提示: 逐步实现功能。 标题、水平线、段落、列表都是以1个空行作为分隔,可以视为块结构。 在划分出块结构后,再修饰行中的文本。 输入规格 整行读入并转换,直到EOF为止。 这题开始有Unicode字符,用UTF-8编码就好,无需特殊处理。 输入合乎规范,无需考虑容错。 输出规格 HTML格式文本。 可以重定向到HTML文件,用浏览器打开查看。 样例输入 # 一级标题 ## 二级标题 ### 三级标题 #### 四级标题 ##### 五级标题 ###### 六级标题 --- 段落1行1 段落2行1 段落2行2 - 列表A1 - 列表B1 - 列表B2 *强调(斜体)* **着重(粗体)** ***着重强调(粗斜体)*** `a ^= b; b ^= a; a ^= b;` 样例输出 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Markdown</title> </head> <body> <h1>一级标题</h1> <h2>二级标题</h2> <h3>三级标题</h3> <h4>四级标题</h4> <h5>五级标题</h5> <h6>六级标题</h6> <hr> <p>段落1行1</p> <p>段落2行1<br> 段落2行2</p> <ul> <li>列表A1</li> </ul> <ul> <li>列表B1</li> <li>列表B2</li> </ul> <p>强调(斜体)</p> <p><strong>着重(粗体)</strong></p> <p><strong>着重强调(粗斜体)</strong></p> <p><code>a ^= b; b ^= a; a ^= b;</code></p> </body> </html> 样例解释 很直观了呀,不想解释,说说测试点吧: 测试点0:样例 测试点1:标题 测试点2:水平分割线 测试点3:段落 测试点4:列表 测试点5:强调等修饰 测试点6:代码 测试点7:强调修饰组合。 测试点8:文本修饰组合。 测试点9:全功能组合测试。 代码长度限制 16 KB 时间限制 400 ms 内存限制 64 MB 栈限制 8192 KB
最新发布
10-15
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值