Re: a conflicting StringReplace
- To: mathgroup at smc.vnet.net
- Subject: [mg56334] Re: [mg56306] a conflicting StringReplace
- From: DrBob <drbob at bigfoot.com>
- Date: Fri, 22 Apr 2005 06:23:17 -0400 (EDT)
- References: <200504210936.FAA05094@smc.vnet.net>
- Reply-to: drbob at bigfoot.com
- Sender: owner-wri-mathgroup at wolfram.com
I imagine StringReplace is making a single pass through the first argument string, not one for each Rule. The first pair that matches a Rule is what matters, not the first Rule that leads to a match.
Bobby
On Thu, 21 Apr 2005 05:36:35 -0400 (EDT), Hui Fang <fangh73 at xmu.edu.cn> wrote:
> 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
>
>
>
>
--
DrBob at bigfoot.com
- References:
- a conflicting StringReplace
- From: Hui Fang <fangh73@xmu.edu.cn>
- a conflicting StringReplace