提问人:RTC222 提问时间:6/14/2019 更新时间:1/25/2022 访问量:6082
如何自动将大量文本格式化为 html?
How do I format a large amount of text into html automatically?
问:
我将在我的网站上发布一个博客。我经常会在文字处理器中写相当长的条目。我的网站有自定义的 html 和 css 标签,例如 -div class=“blog_post_para”-。
我会将文本转储到 .txt 文档中(完成后我会将其另存为 .html),但是手动将标签添加到每个段落和标题将缓慢而乏味。
是否有任何工具可以自动格式化开头带有“div”标签和结尾带有 /div 标签的段落。第 p 段和 /p> 标记也是如此。
我不想使用像 Dreamweaver 这样的 IDE。我只想格式化 .txt 文档或另存为 .html 的文本文档中的代码。
我可以将文字处理器文档输出到 html,但所有样式都是内联的,并且它们无法与我网站上的自定义样式匹配,因为文字处理器不知道它们的名称。默认样式不行 -- 我有自己的自定义 css 类。
它还必须用 [amp]#39 替换撇号;和破折号——
我打算以编程方式(在 Python 中)执行此操作,这可能是最自定义的解决方案,但这需要一些时间。
有这样的工具吗?
答:
既然这最终会出现在网页上,为什么不使用 JavaScript?一个非常简单的函数可以将纯文本转换为格式正确的标签,或者您想要的任何其他内容。例如:
function contentToHtml(text) {
return text
.split('\n\n')
.map(paragraph => `<p>${paragraph}</p>`)
.join('')
}
此函数假定您在分隔段落时按两次回车键。它将接受您的文本并将每个段落包装在标签中。<p>
评论
您可能想研究一下 Jekyll,它是一个静态站点生成器,我认为它几乎是针对您的要求而设计的,特别是因为您正在发布博客。
作为奖励,它与 Github Pages 很好地集成在一起,因此您可以获得免费托管。
https://help.github.com/en/articles/using-jekyll-as-a-static-site-generator-with-github-pages
评论
另一个 JavaScript 解决方案(单击“确定”):
(function(){
let inp = document.getElementById('input');
let res = document.getElementById('result');
let ok = document.getElementById('ok');
ok.addEventListener('click', function(){
let open = document.getElementById('open').value;
let close = document.getElementById('close').value;
let str = inp.value;
// The main magic is going here: .replace('something', 'with smth else')
str = str.replace(/^(.)/gm, open + '$1') //Match any non-empty (.) new line ^
.replace(/(.)$/gm, '$1' + close); // Any non-empty (.) line ending $.
res.value = str;
});
})();
*{margin: 0;}
#input, #result {
display: block;
border: 3px solid orange;
width: 500px; height: 80px;
margin: 5px; outline: none;
}
#ok {
padding: 2px 50px;
outline: none;
cursor: pointer;
margin: 0 5px;
}
#open, #close {
width: 200px; padding: 3px;
border: 3px solid orange;
margin: 5px; outline: none;
}
<input id="open" placeholder="Beginning tag..." value="<div>">
<input id="close" placeholder="End" value="</div>">
<textarea id="input" placeholder="Input Text...">Test
Test
Test</textarea>
<button id="ok">OK</button>
<textarea id="result"></textarea>
要自由修改此示例并替换任何文本部分,您必须了解正则表达式。会有所帮助:
regex101.com 正则表达式备忘单
Prettydiff 适用于大文件。它还美化了嵌入的 CSS 和 JavaScript。这是一个质量很差的 gif,显示了一个用 prettydiff 美化的 25Mb html 文件:
更漂亮也很好。我不知道它是否处理大文件。
评论