Re: a conflicting StringReplace
- To: mathgroup at smc.vnet.net
- Subject: [mg56340] Re: [mg56306] a conflicting StringReplace
- From: "Tomas Garza" <tgarza10 at msn.com>
- Date: Fri, 22 Apr 2005 06:23:28 -0400 (EDT)
- References: <200504210936.FAA05094@smc.vnet.net>
- Sender: owner-wri-mathgroup at wolfram.com
Look at the Help browser to see how StringReplace works: "StringReplace goes
through a string, testing substrings that start at each successive character
position. On each substring, it tries in turn each of the transformation
rules you have specified. If any of the rules apply, it replaces the
substring, then continues to go through the string, starting at the
character position after the end of the substring. "
Tomas Garza
Mexico City
----- Original Message -----
From: "Hui Fang" <fangh73 at xmu.edu.cn>
To: mathgroup at smc.vnet.net
Subject: [mg56340] [mg56306] a conflicting StringReplace
>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
>
>
- References:
- a conflicting StringReplace
- From: Hui Fang <fangh73@xmu.edu.cn>
- a conflicting StringReplace