Re: a conflicting StringReplace

*To*: mathgroup at smc.vnet.net*Subject*: [mg56309] Re: a conflicting StringReplace*From*: "Jens-Peer Kuska" <kuska at informatik.uni-leipzig.de>*Date*: Fri, 22 Apr 2005 06:22:33 -0400 (EDT)*Organization*: Uni Leipzig*References*: <d47tic$578$1@smc.vnet.net>*Sender*: owner-wri-mathgroup at wolfram.com

Hi, try StringReplace["abc", {q_ ~~ "bc" :> q <> "BC", "ab" ~~ q_ :> "AB" <> q}] and StringReplace["abc", {"ab" ~~ q_ :> "AB" <> q, q_ ~~ "bc" :> q <> "BC"}] Regards Jens "Hui Fang" <fangh73 at xmu.edu.cn> schrieb im Newsbeitrag news:d47tic$578$1 at smc.vnet.net... >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 >