a conflicting StringReplace

*To*: mathgroup at smc.vnet.net*Subject*: [mg56306] a conflicting StringReplace*From*: Hui Fang <fangh73 at xmu.edu.cn>*Date*: Thu, 21 Apr 2005 05:36:35 -0400 (EDT)*Organization*: Xiamen University Photonics Center*Reply-to*: fangh73 at xmu.edu.cn*Sender*: owner-wri-mathgroup at wolfram.com

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

**Follow-Ups**:**Re: a conflicting StringReplace***From:*Igor Antonio <igora@wolf-ram.com>

**Re: a conflicting StringReplace***From:*"Tomas Garza" <tgarza10@msn.com>

**Re: a conflicting StringReplace***From:*DrBob <drbob@bigfoot.com>