MathGroup Archive 2005

[Date Index] [Thread Index] [Author Index]

Search the Archive

a conflicting StringReplace

  • To: mathgroup at
  • Subject: [mg56306] a conflicting StringReplace
  • From: Hui Fang <fangh73 at>
  • Date: Thu, 21 Apr 2005 05:36:35 -0400 (EDT)
  • Organization: Xiamen University Photonics Center
  • Reply-to: fangh73 at
  • Sender: owner-wri-mathgroup at

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      

  • Prev by Date: Re: Exact Symbolic Notation
  • Next by Date: Re: (x-y) DiracDelta[x-y] does not simplify to 0
  • Previous by thread: Re: removing sublist . Again and Different
  • Next by thread: Re: a conflicting StringReplace