我现在在多个应用程序中都遇到了这个问题,我想知道是否有人提出了比我更有效的解决方案。本质上,我的目标是将单元格中的内容转换为 HTML 字符串以包含其所有格式。到目前为止,我的解决方法是遍历字符串中的每个字符以确定字体大小、粗细和样式,但是,当一次转换大量数据时,这可能会非常慢。
问问题
1415 次
1 回答
1
依次遍历每个字符将非常缓慢,但仅在极端情况下才需要。我已经使用以下方法非常成功地解决了同样的问题。
对于每个相关属性(粗体、斜体等),我构建了一个数组,用于存储该属性值的每次更改的位置。然后在生成 HTML 时,我可以吐出所有文本,直到下一次更改(在任何属性中)。在不经常更改的地方,这显然更快。
现在,要到达每个属性的更改位置,我首先测试是否实际上有任何更改,这很容易 - 例如,如果所有文本都是粗体,Font.Bold 将返回 true,如果全部为 false非粗体,如果同时有粗体和非粗体部分,则为 null (或其他一些值 - 我不记得了)。
所以,如果值根本没有变化,我们已经完成了。如果值发生变化,那么我将文本二进制细分为两半并重新开始。再一次,我可能会发现一半都是一样的,而另一半包含变化,所以我像以前一样对下半部分进行另一个细分,以此类推。
由于很少有细胞倾向于有很多变化,而许多细胞根本没有,这最终会非常有效。或者至少比逐字符方法更有效。
于 2012-10-21T20:26:00.407 回答