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.