# Convert a numerical expression to words

I would like to convert algebraic sums of the form 8+1-3 into words, obtaining "eight plus one minus three".

I have tried using IntegerName, but it does not work for me, it computes the result

IntegerName[8 + 1 - 3, "Words"]


"six"

I have tried sing HoldForm or Unevaluated in conjunction with SpokenString, but no joy. Grateful if anyone can help!

ETA - note that my question is different from the one asked here: Convert number to word where only one number, not an expression, needed converting.

SpokenString[HoldForm[8 + 1 - 3]]

% // StringReplace[n : NumberString :> IntegerName @ ToExpression @ n]

• Surprisingly IntegerName will handle 8.5 and friends too. – Kuba May 8 '18 at 13:13