Commatizing numbers: Difference between revisions
Content added Content deleted
(Commatizing numbers en FreeBASIC) |
m (→{{header|Phix}}: added syntax colouring the hard way, showcommas note) |
||
Line 1,091: | Line 1,091: | ||
=={{header|Phix}}== |
=={{header|Phix}}== |
||
Note that printf() has comma handling built in, for example sprintf("%,d",1234) yields "1,234". |
Note that printf() has comma handling built in, for example sprintf("%,d",1234) yields "1,234".<br> |
||
You can find out how that is done by searching for showcommas in builtins\VM\pprntfN.e or (actually JavaScript) in pwa\p2js.js |
|||
<lang Phix>procedure commatize(string s, string sep=",", integer start=1, integer step=3) |
|||
<!--<lang Phix>(phixonline)--> |
|||
integer l = length(s) |
|||
<span style="color: #008080;">with</span> <span style="color: #008080;">javascript_semantics</span> |
|||
for i=start to l do |
|||
<span style="color: #008080;">procedure</span> <span style="color: #000000;">commatize</span><span style="color: #0000FF;">(</span><span style="color: #004080;">string</span> <span style="color: #000000;">s</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">sep</span><span style="color: #0000FF;">=</span><span style="color: #008000;">","</span><span style="color: #0000FF;">,</span> <span style="color: #004080;">integer</span> <span style="color: #000000;">start</span><span style="color: #0000FF;">=</span><span style="color: #000000;">1</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">step</span><span style="color: #0000FF;">=</span><span style="color: #000000;">3</span><span style="color: #0000FF;">)</span> |
|||
if find(s[i],"123456789") then |
|||
<span style="color: #004080;">integer</span> <span style="color: #000000;">l</span> <span style="color: #0000FF;">=</span> <span style="color: #7060A8;">length</span><span style="color: #0000FF;">(</span><span style="color: #000000;">s</span><span style="color: #0000FF;">)</span> |
|||
for j=i+1 to l+1 do |
|||
<span style="color: #008080;">for</span> <span style="color: #000000;">i</span><span style="color: #0000FF;">=</span><span style="color: #000000;">start</span> <span style="color: #008080;">to</span> <span style="color: #000000;">l</span> <span style="color: #008080;">do</span> |
|||
if j>l or not find(s[j],"0123456789") then |
|||
<span style="color: #008080;">if</span> <span style="color: #7060A8;">find</span><span style="color: #0000FF;">(</span><span style="color: #000000;">s</span><span style="color: #0000FF;">[</span><span style="color: #000000;">i</span><span style="color: #0000FF;">],</span><span style="color: #008000;">"123456789"</span><span style="color: #0000FF;">)</span> <span style="color: #008080;">then</span> |
|||
for k=j-1-step to i by -step do |
|||
<span style="color: #008080;">for</span> <span style="color: #000000;">j</span><span style="color: #0000FF;">=</span><span style="color: #000000;">i</span><span style="color: #0000FF;">+</span><span style="color: #000000;">1</span> <span style="color: #008080;">to</span> <span style="color: #000000;">l</span><span style="color: #0000FF;">+</span><span style="color: #000000;">1</span> <span style="color: #008080;">do</span> |
|||
s[k+1..k] = sep |
|||
<span style="color: #008080;">if</span> <span style="color: #000000;">j</span><span style="color: #0000FF;">></span><span style="color: #000000;">l</span> <span style="color: #008080;">or</span> <span style="color: #008080;">not</span> <span style="color: #7060A8;">find</span><span style="color: #0000FF;">(</span><span style="color: #000000;">s</span><span style="color: #0000FF;">[</span><span style="color: #000000;">j</span><span style="color: #0000FF;">],</span><span style="color: #008000;">"0123456789"</span><span style="color: #0000FF;">)</span> <span style="color: #008080;">then</span> |
|||
end for |
|||
<span style="color: #008080;">for</span> <span style="color: #000000;">k</span><span style="color: #0000FF;">=</span><span style="color: #000000;">j</span><span style="color: #0000FF;">-</span><span style="color: #000000;">1</span><span style="color: #0000FF;">-</span><span style="color: #000000;">step</span> <span style="color: #008080;">to</span> <span style="color: #000000;">i</span> <span style="color: #008080;">by</span> <span style="color: #0000FF;">-</span><span style="color: #000000;">step</span> <span style="color: #008080;">do</span> |
|||
exit |
|||
<span style="color: #000000;">s</span><span style="color: #0000FF;">[</span><span style="color: #000000;">k</span><span style="color: #0000FF;">+</span><span style="color: #000000;">1</span><span style="color: #0000FF;">..</span><span style="color: #000000;">k</span><span style="color: #0000FF;">]</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">sep</span> |
|||
end if |
|||
<span style="color: #008080;">end</span> <span style="color: #008080;">for</span> |
|||
end for |
|||
exit |
<span style="color: #008080;">exit</span> |
||
<span style="color: #008080;">end</span> <span style="color: #008080;">if</span> |
|||
end if |
|||
<span style="color: #008080;">end</span> <span style="color: #008080;">for</span> |
|||
end for |
|||
<span style="color: #008080;">exit</span> |
|||
printf(1,"%s\n",{s}) |
|||
<span style="color: #008080;">end</span> <span style="color: #008080;">if</span> |
|||
end procedure |
|||
<span style="color: #008080;">end</span> <span style="color: #008080;">for</span> |
|||
<span style="color: #7060A8;">printf</span><span style="color: #0000FF;">(</span><span style="color: #000000;">1</span><span style="color: #0000FF;">,</span><span style="color: #008000;">"%s\n"</span><span style="color: #0000FF;">,{</span><span style="color: #000000;">s</span><span style="color: #0000FF;">})</span> |
|||
commatize("pi=3.14159265358979323846264338327950288419716939937510582097494459231"," ",6,5) |
|||
<span style="color: #008080;">end</span> <span style="color: #008080;">procedure</span> |
|||
commatize("The author has two Z$100000000000000 Zimbabwe notes (100 trillion).",".") |
|||
commatize("\"-in Aus$+1411.8millions\"") |
|||
<span style="color: #000000;">commatize</span><span style="color: #0000FF;">(</span><span style="color: #008000;">"pi=3.14159265358979323846264338327950288419716939937510582097494459231"</span><span style="color: #0000FF;">,</span><span style="color: #008000;">" "</span><span style="color: #0000FF;">,</span><span style="color: #000000;">6</span><span style="color: #0000FF;">,</span><span style="color: #000000;">5</span><span style="color: #0000FF;">)</span> |
|||
commatize("===US$0017440 millions=== (in 2000 dollars)") |
|||
<span style="color: #000000;">commatize</span><span style="color: #0000FF;">(</span><span style="color: #008000;">"The author has two Z$100000000000000 Zimbabwe notes (100 trillion)."</span><span style="color: #0000FF;">,</span><span style="color: #008000;">"."</span><span style="color: #0000FF;">)</span> |
|||
commatize("123.e8000 is pretty big.") |
|||
<span style="color: #000000;">commatize</span><span style="color: #0000FF;">(</span><span style="color: #008000;">"\"-in Aus$+1411.8millions\""</span><span style="color: #0000FF;">)</span> |
|||
commatize("The land area of the earth is 57268900(29% of the surface) square miles.") |
|||
<span style="color: #000000;">commatize</span><span style="color: #0000FF;">(</span><span style="color: #008000;">"===US$0017440 millions=== (in 2000 dollars)"</span><span style="color: #0000FF;">)</span> |
|||
commatize("Ain't no numbers in this here words, nohow, no way, Jose.") |
|||
<span style="color: #000000;">commatize</span><span style="color: #0000FF;">(</span><span style="color: #008000;">"123.e8000 is pretty big."</span><span style="color: #0000FF;">)</span> |
|||
commatize("James was never known as 0000000007") |
|||
<span style="color: #000000;">commatize</span><span style="color: #0000FF;">(</span><span style="color: #008000;">"The land area of the earth is 57268900(29% of the surface) square miles."</span><span style="color: #0000FF;">)</span> |
|||
⚫ | |||
<span style="color: #000000;">commatize</span><span style="color: #0000FF;">(</span><span style="color: #008000;">"Ain't no numbers in this here words, nohow, no way, Jose."</span><span style="color: #0000FF;">)</span> |
|||
commatize(" $-140000±100 millions.") |
|||
<span style="color: #000000;">commatize</span><span style="color: #0000FF;">(</span><span style="color: #008000;">"James was never known as 0000000007"</span><span style="color: #0000FF;">)</span> |
|||
commatize("6/9/1946 was a good year for some.")</lang> |
|||
⚫ | <span style="color: #000000;">commatize</span><span style="color: #0000FF;">(</span><span style="color: #008000;">"Arthur Eddington wrote: I believe there are 15747724136275002577605653961181555468044717914527116709366231425076185631031296 protons in the universe."</span><span style="color: #0000FF;">)</span> |
||
<span style="color: #000000;">commatize</span><span style="color: #0000FF;">(</span><span style="color: #008000;">" $-140000±100 millions."</span><span style="color: #0000FF;">)</span> |
|||
<span style="color: #000000;">commatize</span><span style="color: #0000FF;">(</span><span style="color: #008000;">"6/9/1946 was a good year for some."</span><span style="color: #0000FF;">)</span> |
|||
<!--</lang>--> |
|||
{{Out}} |
{{Out}} |
||
<pre> |
<pre> |