is there a way to output formatted text following the locale settings ?

someone someone at somewhere.com
Wed May 26 00:18:29 UTC 2021


On Tuesday, 25 May 2021 at 23:41:39 UTC, Paul Backus wrote:

> From [the documentation of `formattedWrite`][1]:
>
>> Separator
>>
>>    Inserts the separator symbols ',' every X digits, from 
>> right to left, into numeric values to increase readability. 
>> The fractional part of floating point values inserts the 
>> separator from left to right. Entering an integer after the 
>> ',' allows to specify X. If a '*' is placed after the ',' then 
>> X is specified by an additional parameter to the format 
>> function. Adding a '?' after the ',' or X specifier allows to 
>> specify the separator character as an additional parameter.
>
> So the syntax you want is:
>
>     writeln(format("%,?d", '`', intAmount));

Thanks for your reply, but no, let me clarify:

I do not want 123\`456\`789 or whatever else custom delimiter.

I just want to output what is already set in the LC_ALL locale 
environment variable which in my case results in 123,456,789 
which of course I can mimic hard-coding it, but the idea is ... 
quite the opposite.

The ` (backtick) I used in my example was from another example I 
found somewhere on the net saying that, when you use the backtick 
character after issuing a setlocale() call, you'll get the output 
accordingly to the LC_ALL variable. Needless to say I am not sure 
whether this is correct or not because the documentation I came 
across is confusing to say the least; furthermore, someone saying 
not every implementation is compatible with this behavior and 
someone else claiming it works for POSIX or the reverse I do not 
remember correctly right now.

I do not need to use std.format.format().

I can welcome any other function in the standard library to 
achieve this.


More information about the Digitalmars-d-learn mailing list