我試圖在TLF中插入一個鏈接。通常你只會簡單地使用正則表達式跨越多個XML標籤的字符串匹配索引
var linkElement:LinkElement = textArea.textFlow.interactionManager.applyLink(...);
的問題是,如果我創建它地跨不同格式的文本(粗體,斜體等),或天堂跨越段落和列表項禁止,它完全徹底的鏈接碰撞和灼傷。鏈接格式完全丟失,列表結構崩潰。
只要通過addChild()添加LinkElement也不起作用,如果我們要在選定的文本中保留格式和結構。
利用interactionManager.cutTextScrap(...)將選擇的textFlow取出,用interactionManager.applyLink(...)將其包裝在LinkElement中,然後「粘貼」回來...也會產生一個混亂。
所以我必須創建自己的鏈接插入例程。
什麼我決心要做的是:
1)轉換文本流標記爲一個字符串
2)查找文本流串
內選擇的起點和終點指標3)中的起始索引在插入以下字符串:
</span><a href="[hrefVar]" target="[targetVar]"><span>
4)插入結束索引處的以下字符串:
</span></a><span>
5)重新轉換文本流串到TextFlow對象爲文本區域
瞧!即時RTF鏈接!
唯一的問題是......我不知道如何向寫一個正則表達式解析方程,可以找到XML標記內的一個字符串匹配,其中結果可能跨越幾個標籤傳播的開始和結束索引。
例如,如果是TextFlow爲(略):
<TextFlow><p><span>Lorem Ip</span><span fontWeight="bold">sum do</span><span>
lor sit am</span><span fontStyle="italic">et, consectetur adipiscing elit.
</span></p></TextFlow>
說,例如,用戶已經選擇了「悲存有坐阿梅特」被轉換成一個鏈接。我需要找到的第一個和最後一個索引「存有悲坐阿梅德」該RTF標記中,然後插入)於3所示琴絃& 4),從而使最終的結果看起來是這樣的:
<TextFlow><p><span>Lorem </span><a href="http://www.google.ca" target="_blank">
<span>Ip</span><span fontWeight="bold">sum do</span><span>lor sit am</span>
<span fontStyle="italic">et</span></a><span>, consectetur adipiscing elit.
</span></p></TextFlow>
你可能失去了一些樣式格式,但我可以修復通過文本流格式化後解析。
我需要的是正則表達式來做第2步)。
我知道正則表達式忽略標籤並去掉標籤之間的文本,以及如何找到所選文本在剝離的文本流文本中的字符串匹配......但不知道如何在原始文件中找到匹配索引(未劃掉)textflow字符串。
有人嗎?