【发布时间】:2011-06-27 19:30:35
【问题描述】:
给定任何包含可打印字符的任意文本文件,如何将其转换为呈现完全相同的 HTML(具有以下要求)?
- 除了默认的 HTML 空白规则外,不依赖任何其他规则
- 没有
<pre>标签 - 没有 CSS
white-space规则
- 没有
-
<p>标签很好,但不是必需的(<br />s 和/或<div>s 很好) -
空白被完全保留。
鉴于以下输入行(忽略错误的自动语法突出显示):
Line one Line two, indented four spaces浏览器应该呈现完全相同的输出,保持第二行的缩进以及“缩进”和“空格”之间的间隙。当然,我实际上并不是在寻找等宽输出,而且字体与算法/标记正交。
鉴于这两行是一个完整的输入文件,正确的输出示例应该是:
Line one<br /> Line two, indented four spaces 浏览器中的软包装是可取的。也就是说,生成的 HTML 不应强制用户滚动,即使输入行比其视口宽(假设单个单词仍比所述视口窄)。
我正在寻找完全定义的算法。在 python 或 javascript 中实施的奖励积分。
(请不要只回答我应该使用 <pre> 标签或 CSS white-space 规则,因为我的要求会使这些选项站不住脚。也请不要发布未经测试和/或幼稚的建议,例如就像“用&nbsp;替换所有空格。”毕竟,我很肯定一个解决方案在技术上是可行的——这是一个有趣的问题,你不觉得吗?)
【问题讨论】:
-
“用 替换所有空格”有什么问题?只是问一下,这是首先想到的 - 当然,您还需要用
<br>替换换行符并以某种方式展开选项卡。 -
“这是一个有趣的问题,你不觉得吗?” - 并不真地。这个问题已经通过不止一种方式为您解决了。
-
@delnan,可能是因为这不允许浏览器换行
-
您只关心行首的空格,还是想保留行内文本的位置?或者,换句话说,您的文本中是否有要保留的列?
-
@matt “你的问题是不必要的。”你不知道。由于上面提到的限制,我上面提到的幼稚解决方案是站不住脚的。如果解决方案这么明显,请回答!
标签: javascript python html algorithm plaintext