我目前正在編寫一個程序,它通過在RTF標籤周圍放置RTF標籤來格式化某些單詞。 尋找一個可能有一個RTF標記的特定單詞
作爲該計劃允許,可以重疊的其他格式的規則(即着色短語「請幫幫我」所有黃色和着色「請」藍色),該方案具有難以找到匹配的是已經格式化由以前的規則(即「請幫幫我」,從前面的例子變成「\ CF1請\ CF0幫我」,這將不匹配其他規則。
我一直在使用正則表達式來解決這個問題,並且在短語中的每個字符之後放置一個匹配任何RTF標籤的表達式(因爲規則是由用戶定義的,而且我不知道重疊的具體點),像這樣:
line = Regex.Replace(line, @"\bP(?:\\[^ ]*)*l(?:\\[^ ]*)*e(?:\\[^ ]*)*a(?:\\[^ ]* )*s(?:\\[^ ]*)*e(?:\\[^ ]*)*", Evaluator);
的「(?:\\ [^] *)*」在上述序列中表達無論任何標籤的後發現前面的字符,但與每個規則這樣做急劇減慢代碼並要求我爲每個代碼生成一個正則表達式;根據規則,這可能無法按預期工作。
呃,對不起牆上的文字,我現在就到了。有沒有人知道一個更有效的方式來找到一個在其中有一個RTF標籤在一個未知點的單詞?
嗯,你的堆棧的想法聽起來很完美。謝謝! – Glen