Eu usei o espaço da figura (como sugerido pelo user1458424) para alinhar números e o espaço fino para separar milhares.
Em, digamos, JavaScript ou C, você pode digitar os códigos de caracteres unicode correspondentes em qualquer lugar de uma string:
-
\u2007
: espaço de figura.
-
\u202F
: espaço fino.
Usar o espaço thin como separador de milhares tem algumas vantagens significativas:
- A intenção é clara para os leitores americanos e europeus, em vez de usar um
,
ou .
.
- Você pode adicioná-lo independentemente de o valor ser
>= 1000
, pois o espaço é invisível aos olhos.
- É mais fino que o espaço normal que separa o sinal de moeda do valor, o que faz com que pareça melhor quando há apenas um espaço após o sinal de moeda.
Abaixo, descreverei o que fiz para obter o seguinte formato (separador decimal europeu ,
neste exemplo):
- € 1,75
- € 100,00
- € 199,97
- € 10350,00
- € 21003,18
-
€ 121018,33
- Remover da entrada todos os caracteres não dígitos:
price.replace(/[^\d]+/g, '')
.
- Conte os "caracteres ausentes":
missingDigits = maxDigits - price.length
.
- Defina o valor de saída como
'€'
.
- Para cada dígito ausente, anexe um espaço de figura à saída:
'\u2007'
.
- Anexe todos os dígitos de entrada, exceto os dois últimos, depois um separador decimal e, em seguida, os dois últimos dígitos da entrada.
- Retorna todos os caracteres da saída, exceto os seis últimos, acrescentados por um espaço fino
'\u202F'
, anexado pelos seis últimos caracteres.
A entrada pode ser qualquer representação de string de um número, com ou sem pontuação e caracteres ilegais. A saída será como visto acima. Você tem que escolher o número máximo de dígitos permitidos.