towxml
towxml copied to clipboard
Markdown 语法无法正常解析,会出现多余的换行
我使用的是最新版本v3,我在解析长字符串时,解析成小程序的dom,会出现很多多余的换行,导致显示错乱!
###要解析的原文本如下###
成为律师通常需要完成以下步骤,但请注意,这些步骤可能因国家或地区而异:
1. **教育背景**:
- 完成高中教育。
- 获得学士学位。在某些国家,你需要完成特定的预律学课程或拥有相关领域的学士学位,如政治学、历史或法学。
2. **法学院**:
- 参加法学院入学考试(如美国的LSAT)。
- 获得法学院录取,并完成法学教育,通常是三年的全日制学习,获得法学博士(JD)学位。
3. **实习经验**:
- 在法学院期间或之后,通过实习或工作,获得实际法律工作经验。
4. **通过律师资格考试**:
- 在大多数国家和地区,你需要通过律师资格考试才能获得执业许可。在美国,这被称为律师资格考试(Bar Exam)。
5. **道德和背景审查**:
- 通过道德品质评估和背景调查,证明你的诚信和适合从事法律职业。
6. **律师执照**:
- 在通过考试和审查后,你将获得律师执照,可以在特定的司法管辖区内执业。
7. **持续教育**:
- 律师通常需要参加持续法律教育课程,以保持他们的执业资格并跟上法律的变化。
8. **专业发展**:
- 一些律师可能会选择专门化,通过额外的考试和认证来专攻某个法律领域。
9. **加入律师协会**:
- 在某些国家,律师需要加入律师协会或律师公会,以便维护职业标准和参与职业发展活动。
请记住,这些步骤是一般性的指导,具体要求可能会根据你所在的国家或地区有所不同。如果你对特定地区的要求有疑问,最好咨询当地的律师协会或教育机构。
###调用 md.render 后的结果如下###
<p>成为律师通常需要完成以下步骤,但请注意,这些步骤可能因国家或地区而异:</p>
<ol>
<li>
<p><strong>教育背景</strong>:</p>
<ul>
<li>完成高中教育。</li>
<li>获得学士学位。在某些国家,你需要完成特定的预律学课程或拥有相关领域的学士学位,如政治学、历史或法学。</li>
</ul>
</li>
<li>
<p><strong>法学院</strong>:</p>
<ul>
<li>参加法学院入学考试(如美国的LSAT)。</li>
<li>获得法学院录取,并完成法学教育,通常是三年的全日制学习,获得法学博士(JD)学位。</li>
</ul>
</li>
<li>
<p><strong>实习经验</strong>:</p>
<ul>
<li>在法学院期间或之后,通过实习或工作,获得实际法律工作经验。</li>
</ul>
</li>
<li>
<p><strong>通过律师资格考试</strong>:</p>
<ul>
<li>在大多数国家和地区,你需要通过律师资格考试才能获得执业许可。在美国,这被称为律师资格考试(Bar Exam)。</li>
</ul>
</li>
<li>
<p><strong>道德和背景审查</strong>:</p>
<ul>
<li>通过道德品质评估和背景调查,证明你的诚信和适合从事法律职业。</li>
</ul>
</li>
<li>
<p><strong>律师执照</strong>:</p>
<ul>
<li>在通过考试和审查后,你将获得律师执照,可以在特定的司法管辖区内执业。</li>
</ul>
</li>
<li>
<p><strong>持续教育</strong>:</p>
<ul>
<li>律师通常需要参加持续法律教育课程,以保持他们的执业资格并跟上法律的变化。</li>
</ul>
</li>
<li>
<p><strong>专业发展</strong>:</p>
<ul>
<li>一些律师可能会选择专门化,通过额外的考试和认证来专攻某个法律领域。</li>
</ul>
</li>
<li>
<p><strong>加入律师协会</strong>:</p>
<ul>
<li>在某些国家,律师需要加入律师协会或律师公会,以便维护职业标准和参与职业发展活动。</li>
</ul>
</li>
</ol>
<p>请记住,这些步骤是一般性的指导,具体要求可能会根据你所在的国家或地区有所不同。如果你对特定地区的要求有疑问,最好咨询当地的律师协会或教育机构。</p>
最后每个节点按照如上字符串的方式出现多余换行,结果如下:
我查看dom节点,发现有很多换行
还请麻烦指导一下
是不是应该在匹配节点末端,如 </li>
,不添加换行?
暂时解决了这个问题,我在解析之前过滤了 \r\n
module.exports = (str,type,option)=>{
option = option || {};
let result;
switch (type) {
case 'markdown':
let r = md(str)
// 添加如下代码,过滤 \r\n
r = r.replace(/(\r|\n){1,}/g, str => {
return new Array(str.length).join("<p> </p>")
});
r = r.replace(/\r|\n/g, str => {
return "\r"
});
result = parse(r,option);
break;
case 'html':
result = parse(str,option);
break;
default:
throw new Error('Invalid type, only markdown and html are supported');
break;
};
return result;
};
暂时解决了这个问题,我在解析之前过滤了 \r\n
module.exports = (str,type,option)=>{ option = option || {}; let result; switch (type) { case 'markdown': let r = md(str) // 添加如下代码,过滤 \r\n r = r.replace(/(\r|\n){1,}/g, str => { return new Array(str.length).join("<p> </p>") }); r = r.replace(/\r|\n/g, str => { return "\r" }); result = parse(r,option); break; case 'html': result = parse(str,option); break; default: throw new Error('Invalid type, only markdown and html are supported'); break; }; return result; };
感谢老哥 我也这么解决的,但是想问下为什么要用空p标签替换呢?