I have a list that I am using for the legend of a plot
gases = {"Air", "He", "Ar", "\!\(\*SubscriptBox[\(N\), \(2\)]\)", "\!\(\*SubscriptBox[\(CO\), \(2\)]\)"};
However, I also want to Export
the data as a CSV table. When I do this the header gets all wacky:
ExportString[Join[{gases}, RandomInteger[{0, 1}, {2, 5}]], "CSV"]
"Air,He,Ar,\"N \"
2,\"CO \"
2
0,0,0,1,1
1,1,0,1,1"
This is obviously because of the SubscriptBox
. So how can I remove these so that
Foo[gases]
{"Air", "He", "Ar", "N2", "CO2"}
Answer
A slightly more general version of JasonB's solution:
deSubscript[string_] := StringReplace[string,
"\!\(\*SubscriptBox[\(" ~~ Shortest[x__] ~~ "\), \(" ~~
Shortest[y__] ~~ "\)]\)" :> x <> y
];
which also works if the string contains something other than a single SubscriptBox
:
In[243]:= subscriptBoxToString["\!\(\*SubscriptBox[\(aH\), \(2\)]\)\!\
\(\*SubscriptBox[\(123\), \(3\)]\)"]
subscriptBoxToString["\!\(\*SubscriptBox[\(C\), \(2\)]\) \
\!\(\*SubscriptBox[\(NH\), \(3\)]\)"]
subscriptBoxToString["\!\(\*SubscriptBox[\(CO\), \(2\)]\)"]
Out[243]= "aH21233"
Out[244]= "C2 NH3"
Out[245]= "CO2"
Comments
Post a Comment