2

我现在在多个应用程序中都遇到了这个问题,我想知道是否有人提出了比我更有效的解决方案。本质上,我的目标是将单元格中的内容转换为 HTML 字符串以包含其所有格式。到目前为止,我的解决方法是遍历字符串中的每个字符以确定字体大小、粗细和样式,但是,当一次转换大量数据时,这可能会非常慢。

4

1 回答 1

1

依次遍历每个字符将非常缓慢,但仅在极端情况下才需要。我已经使用以下方法非常成功地解决了同样的问题。

对于每个相关属性(粗体、斜体等),我构建了一个数组,用于存储该属性值的每次更改的位置。然后在生成 HTML 时,我可以吐出所有文本,直到下一次更改(在任何属性中)。在不经常更改的地方,这显然更快。

现在,要到达每个属性的更改位置,我首先测试是否实际上有任何更改,这很容易 - 例如,如果所有文本都是粗体,Font.Bold 将返回 true,如果全部为 false非粗体,如果同时有粗体和非粗体部分,则为 null (或其他一些值 - 我不记得了)。

所以,如果值根本没有变化,我们已经完成了。如果值发生变化,那么我将文本二进制细分为两半并重新开始。再一次,我可能会发现一半都是一样的,而另一半包含变化,所以我像以前一样对下半部分进行另一个细分,以此类推。

由于很少有细胞倾向于有很多变化,而许多细胞根本没有,这最终会非常有效。或者至少比逐字符方法更有效。

于 2012-10-21T20:26:00.407 回答