Having problem comparing Money struct string output

Most, if not all, currency formats in CLDR use a non-breaking space between the currency and the amount. This is, I think, correct because it would be potentially confusing if a word or line wrap were to occur between the two parts of the string.

If you really want to force a space than you can define your own format like:

# Note this is forcing a breaking space, 0x20
iex> Money.to_string!(Money.new(:AED, 1234), format: "¤ #,###.00")
"AED 1,234.00"
iex> Money.to_string!(Money.new(:AED, 1234), format: "¤ #,###.00") == "AED 1,234.00"
true

However I don’t recommend it for a few reasons:

  1. Not all currencies follow that format. They have variable number of decimal places. Some formats don’t have a space between the currency symbol and the amount.
  2. You’re not going to be local aware (different locales have different formats for the same currency).

In general I don’t think the comparison you’re doing adds a lot of value - although of course I don’t know your use case and I may be missing something. If so, please let me know what you’re trying to achieve and I’ll help.

ex_cldr_number (that does the actually formatting for ex_money) has thousands of tests. If some formatting is incorrect then it’s a bug and I will fix it.