MathGroup Archive 2007

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

Search the Archive

Re: StringReplace

  • To: mathgroup at smc.vnet.net
  • Subject: [mg77801] Re: StringReplace
  • From: Jean-Marc Gulliet <jeanmarc.gulliet at gmail.com>
  • Date: Sun, 17 Jun 2007 06:03:21 -0400 (EDT)
  • Organization: The Open University, Milton Keynes, UK
  • References: <f503n2$pc7$1@smc.vnet.net>

Bruce Colletti wrote:
> Re Mathematica 6.0 under WinXP.
> 
> Create variable X by:
> 
> - Punching the summation button in the BasicMathInputPalette
> 
> - Filling in the blanks:  index i goes from 1 to n, with term f[i]
> 
> - Enclose the whole thing between double quotes, thus making X a string variable (or so I thought)
> 
> Now I want to replace n by 3, and so enter:
> 
>      StringReplace[X,"n"->"3"]
> 
> The output includes a pink box that replaces the sigma and its bounds.  Thankfully, the f[i] appears.
> 
> What causes this output and how can I get X to appear, although with n replaced by 3?
> 
> Thanks.
> 
> Bruce

Looking at the full form of the expression, one can see that Mathematica 
does not like the *UnderoverscriptBox (In[1]). If one uses the input 
form for the sum (In[4]) then the replacement works as expected. Note 
that it would be better to convert the expression into a string with the 
help of the function ToString (which is, indeed, the standard to do this 
sort of things).

In[1]:= X = "\!\(\*UnderoverscriptBox[\"\[Sum]\",
RowBox[{\"i\", \"=\", \"1\"}], \"n\"]\)f[i]"

Out[1]= "\!\(\*UnderoverscriptBox[\"\[Sum]\",
RowBox[{\"i\", \"=\", \"1\"}], \"n\"]\)f[i]"

In[2]:= X // FullForm

Out[2]//FullForm= \!\(\*
TagBox[
StyleBox["\"\<\\!\\(\\*UnderoverscriptBox[\\(\\[Sum]\\), \\(i = 1\\), \
\\(n\\)]\\)f[i]\>\"",
ShowSpecialCharacters->False,
ShowStringCharacters->True,
NumberMarks->True],
FullForm]\)

In[3]:= StringReplace[X, "n" -> "3"]

Out[3]= "
U3deroverscriptBox[\(\[Sum]\), \(i = 1\), \(3\)]f[i]"

In[4]:= Y = "Sum[f[i],{\!\(\*
StyleBox[\"i\", \"TI\"]\),1,n}]"

Out[4]= "Sum[f[i],{\!\(\*
StyleBox[\"i\", \"TI\"]\),1,n}]"

In[5]:= Y // FullForm

Out[5]//FullForm= \!\(\*
TagBox[
StyleBox["\"\<Sum[f[i],{\\!\\(\\*\\nStyleBox[\\\"i\\\", \
\\\"TI\\\"]\\),1,n}]\>\"",
ShowSpecialCharacters->False,
ShowStringCharacters->True,
NumberMarks->True],
FullForm]\)

In[6]:= StringReplace[Y, "n" -> "3"]

Out[6]= "Sum[f[i],{\!\(\*
StyleBox[\"i\", \"TI\"]\),1,3}]"

Regards,
Jean-Marc


  • Prev by Date: more gripe about the new documentation center (DC) in Mathematica 6
  • Next by Date: Re: Mathematica 6.0 not running in Fedora 7?
  • Previous by thread: Re: StringReplace
  • Next by thread: Is TableForm broken?