给出一个字符串中号包含长期一个和乙,我想代替每个一个为乙每乙为一个为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