2011-12-28 94 views
2

我想创建一个文本编辑器,它是文本字符串列表的前端。用户可以在文本编辑器中进行更改,我希望能够将更改推送回列表中的相应元素。 假设这是清单c#文本编辑器建模列表

List<string> element; 
element.Add("I was walking one morning,"); 
element.Add(" all of the sudden it started to rain,"); 
element.Add(" I opened my umbrella and looked for the closest coffee shop."); 
element.Add(" After few blocks I was sheltered enjoying my morning coffee."); 

它应该显示在编辑器中常规文本:

我走一天早上,所有的突然开始下雨,我打开我的伞,看着为最近的咖啡店。几个街区后,我享受着早晨的咖啡。

因此,当用户对“查找最近的”进行更改时,我想能够告诉他他正在对元素[2]进行更改。

我还需要存储关于各个元素(格式和其他东西)的更多信息,因此使用List。

我查看了HTML编辑器,并试图在div中包装每个句子,但是当用户进行更改时,HTML编辑器将合并div或删除它。因此会产生额外的工作。

我在想RTF,但在线阅读时没有设定标准。

我很灵活地执行列表和其他信息。

有没有人有任何建议?

非常感谢。

+1

如果您需要存储有关句子的额外信息,请考虑创建一个Sentence类并展示必要的方法/属性。使用字符串列表不会为您提供所需的功能(并非易事)。 – 2011-12-28 14:42:29

+0

我不明白。 “我一天早上走路”,不是一句话。它以逗号结尾,所以它是更长句子的一部分。如果你实际上是通过句子分裂的话,那么你可以尝试用'text.Split(new [] {'。','!','?'})'巧妙地做些事情。然后,只要没有人删除您的满座,或插入新句子,您就可以跟踪更改。请澄清您的要求,以便我们提供帮助。 – James 2011-12-28 14:45:57

+0

我最终会创建这个类,这是自然的发展过程,但我试图在投入其他领域的时间之前弄清楚编辑器概念。 – curiousMo 2011-12-28 14:46:40

回答

0

要将列表显示为句子,您可以使用string.Join(“,”,sentence.ToArray())将列表中的字符串元素连接起来。

你将不得不添加一个句子分隔符(一些特殊字符),这将帮助你识别改变的句子。

您可以使用<变量>再次填写您的列表.Split(',')。ToList()。

我希望这可以帮助你,快乐的编码!

+0

将文本发送给编辑器没什么大不了的,它正在计算出正在编辑的区域是问题所在。使用特殊字符分隔列表将不起作用,使用可以删除这些字符,并且会抛出列表。感谢寿。 – curiousMo 2011-12-28 15:19:29