# How to switch from array to string?

Considering we have an array:

a = {2/3, 4/5, 9/7, 3/7, 1/7, 1/9};


How can I get this to be:

"2/3 4/5 9/7 3/7 1/7 1/9"


Thanks!

I would love this to be uniform for both integer and rational numbers

a2 = {2/3, 4/5, 9/7, 3/7, 1.5, 3, 1/9};

StringTrim@StringJoin[" " <> ToString[#, InputForm] & /@ a2]
(* 2/3 4/5 9/7 3/7 1.5 3 1/9 *)

Row[ToString[#, InputForm] & /@ a2, "  "]
(* 2/3  4/5  9/7  3/7  1.5  3  1/9 *)

StringReplace[ToString[a, InputForm], {"{" | "}" -> "", "," -> " "}]
(* 2/3  4/5  9/7  3/7  1.5  3  1/9 *)

StringJoin[Riffle[ToString[#, InputForm] & /@ a2, " "]]
(* 2/3 4/5 9/7 3/7 1.5 3 1/9 *)


Or

StringTake[ToString[a, FormatType -> InputForm], {2, -2}]


The inelegant use of StringTake strips off the leading and trailing brackets.

• Elegant! You can use StringDelete[..., "{" | "}" | ","] instead of StringTake. Apr 12, 2015 at 10:29
• Nice. Btw, this does not give the same form the OP wanted due the "," being there between the numbers. May be just need small modification? Apr 12, 2015 at 10:51
• May be just need small modification? -- Surely, but left as an exercise for the reader :-) Apr 12, 2015 at 11:46
• Nice to see you here @HighPerformanceMark ! :-) Apr 12, 2015 at 16:47

Terse:

a = {1, 17, 2/3, 4/5, 9/7, 3/7, 1/7, 1/9};

ToString @ Row[InputForm /@ a, " "]

"1 17 2/3 4/5 9/7 3/7 1/7 1/9"


Yet another possibility:

a = {2/3, 4/5, 9/7, 3/7, 1/7, 1/9, 5, 6, 99/10};
ExportString[{a}, "Table", "FieldSeparators" -> " "]
"2/3 4/5 9/7 3/7 1/7 1/9 5 6 99/10"

a = {2/3, 4/5, 9/7, 3/7, 1/7, 1/9};
StringJoin@Cases[a, Rational[x_, y_] :>
" "<>ToString[x] <> "/" <> ToString[y]]


Reply to comment "I would love this to be uniform for both integer and rational numbers":

a = {2/3, 4/5, 9/7, 3/7, 1/7, 1/9, 5, 6, 99/10};
f[Rational[x_, y_]] := " " <> ToString[x] <> "/" <> ToString[y];
f[x_] := " " <> ToString[x];
StringJoin[f[#] & /@ a]


• I would love this to be uniform for both integer and rational numbers. Thanks! Apr 12, 2015 at 10:00