Services & Resources / Wolfram Forums
MathGroup Archive
*Archive Index
*Ask about this page
*Print this page
*Give us feedback
*Sign up for the Wolfram Insider

MathGroup Archive 2005

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

Search the Archive

Re: a conflicting StringReplace

  • To: mathgroup at
  • Subject: [mg56309] Re: a conflicting StringReplace
  • From: "Jens-Peer Kuska" <kuska at>
  • Date: Fri, 22 Apr 2005 06:22:33 -0400 (EDT)
  • Organization: Uni Leipzig
  • References: <d47tic$578$>
  • Sender: owner-wri-mathgroup at


StringReplace["abc", {q_ ~~ "bc" :> q <> "BC", 
"ab" ~~ q_ :> "AB" <> q}]

StringReplace["abc", {"ab" ~~ q_ :> "AB" <> q, q_ 
~~ "bc" :> q <> "BC"}]



"Hui Fang" <fangh73 at> schrieb im 
Newsbeitrag news:d47tic$578$1 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: a conflicting StringReplace
  • Next by Date: Re: a conflicting StringReplace
  • Previous by thread: Re: a conflicting StringReplace
  • Next by thread: Re: a conflicting StringReplace