給出一個字符串中號包含長期一個和乙,我想代替每個一個爲乙每乙爲一個爲M'。天真地人會嘗試通過乙並且隨後通過甲乙但在M」只包含甲這種情況下,替換甲。我可以考慮更換條款並記錄其位置,以便條款不會再被替換。這隻適用於我們只有A和B來替換。但是如果我們需要替換兩個以上的術語並且它們的長度不同,那麼它會變得棘手。替換子bidrectionally
所以我想這樣做的:
- 我們給出中號作爲輸入字符串和R = [(X1,Y1),(X2,Y2),...(XN,YN) ]作爲替換條款,我們將i替換爲xi。
- With M,Initiate L = [(M,false)]成爲(string * boolean)元組的列表,其中false表示該字符串未被替換。
- 尋找L的每個成員L(i)中xi的出現次數爲第二項假。分區L(i)分成[(pre,false),(xi,false),(post,false)],映射到[(pre,false),(yi,true),(post,false)] where pre帖子是xi前後的字符串。 Flatten L.
- 重複上述步驟直至R耗盡。
- 將L的每個元組的第一個元素連接起來,從M'。
有沒有更有效的方法呢?
@Amit你能不能寫一個例子作爲答案? – xiamx
你最好自己試試。正則表達式是強大的,但你需要知道它自己的作品是如何使用它的。 –
我想我的問題是,只是http://stackoverflow.com/questions/15604140/replace-multiple-strings-with-multiple-other-strings的更窄的情況下 – xiamx