Re: a conflicting StringReplace

*To*: mathgroup at smc.vnet.net*Subject*: [mg56334] Re: [mg56306] a conflicting StringReplace*From*: DrBob <drbob at bigfoot.com>*Date*: Fri, 22 Apr 2005 06:23:17 -0400 (EDT)*References*: <200504210936.FAA05094@smc.vnet.net>*Reply-to*: drbob at bigfoot.com*Sender*: owner-wri-mathgroup at wolfram.com

I imagine StringReplace is making a single pass through the first argument string, not one for each Rule. The first pair that matches a Rule is what matters, not the first Rule that leads to a match. Bobby On Thu, 21 Apr 2005 05:36:35 -0400 (EDT), Hui Fang <fangh73 at xmu.edu.cn> wrote: > I was teaching Mathematica in a college. In the class I was showing them > some built-in functions about strings. Since this is not a very > important issue, I didn't spend much time on each function. When I show > them StringReplace, I gave them the following examples: > In[1] StringReplace["abc",{"ab"->"AB"}] > Out[1] ABc > > In[2] StringReplace["abc", {"bc"->"BC"}] > Out[2] aBC > > No problem on those. Now a student tried the following: > In[3] StringReplace["abc", {"ab"->"AB", "bc"->"BC"}] > Out[3] ABc > > Now he asked me why only "ab" is replaced. I said this is because there > is a conflict because both "ab" and "bc" contains "b". So Mathematica > will choose the first replacement. I also told him if he changes the > order, he will get aBC. Now: > In[4] StringReplace["abc", {"bc"->"BC","ab"->"AB"}] > Out[4] ABc > > This is the part I don't understand. Does Mathematica treat those rules > in their canonical order (since "ab" is before "bc" in canonical > order.), or in their written order? > > Thanks a lot! > > Hui Fang > > > > -- DrBob at bigfoot.com

**References**:**a conflicting StringReplace***From:*Hui Fang <fangh73@xmu.edu.cn>