<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DZone Snippets: separator code</title>
    <link>http://snippets.dzone.com/posts</link>
    <pubDate>Sun, 18 May 2008 03:22:32 GMT</pubDate>
    <description>DZone Snippets: separator code</description>
    <item>
      <title>add thousands separators to numbers</title>
      <link>http://snippets.dzone.com/posts/show/693</link>
      <description>I've finally figured out how to add thousands separators.&lt;br /&gt;&lt;br /&gt;If there's a built in for this (like a `sprintf` parameters) I don't want to hear it.  I just don't, ok?&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;def ts( st )&lt;br /&gt;  st = st.reverse&lt;br /&gt;  r = ""&lt;br /&gt;  max = if st[-1].chr == '-'&lt;br /&gt;    st.size - 1&lt;br /&gt;  else&lt;br /&gt;    st.size&lt;br /&gt;  end&lt;br /&gt;  if st.to_i == st.to_f&lt;br /&gt;    1.upto(st.size) {|i| r &lt;&lt; st[i-1].chr ; r &lt;&lt; ',' if i%3 == 0 and i &lt; max}&lt;br /&gt;  else&lt;br /&gt;    start = nil&lt;br /&gt;    1.upto(st.size) {|i|&lt;br /&gt;      r &lt;&lt; st[i-1].chr&lt;br /&gt;      start = 0 if r[-1].chr == '.' and not start&lt;br /&gt;      if start&lt;br /&gt;        r &lt;&lt; ',' if start % 3 == 0 and start != 0  and i &lt; max&lt;br /&gt;        start += 1&lt;br /&gt;      end&lt;br /&gt;    }&lt;br /&gt;  end&lt;br /&gt;  r.reverse&lt;br /&gt;end&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;That's it.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;puts ts('100')&lt;br /&gt;puts ts('1')&lt;br /&gt;puts ts('1000')&lt;br /&gt;puts ts('1000000.01')&lt;br /&gt;puts ts('100046546510000.022435451')&lt;br /&gt;puts ts('-100')&lt;br /&gt;puts ts('-1')&lt;br /&gt;puts ts('-1000')&lt;br /&gt;puts ts('-1000000.01')&lt;br /&gt;puts ts('-100046546510000.022435451')&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;outputs:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;100&lt;br /&gt;1&lt;br /&gt;1,000&lt;br /&gt;1,000,000.01&lt;br /&gt;100,046,546,510,000.022435451&lt;br /&gt;-100&lt;br /&gt;-1&lt;br /&gt;-1,000&lt;br /&gt;-1,000,000.01&lt;br /&gt;-100,046,546,510,000.022435451&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;It's ugly, yeah, but it works.</description>
      <pubDate>Fri, 09 Sep 2005 22:32:56 GMT</pubDate>
      <guid>http://snippets.dzone.com/posts/show/693</guid>
      <author>jmoses (jon)</author>
    </item>
    <item>
      <title>Python Comma Separated</title>
      <link>http://snippets.dzone.com/posts/show/620</link>
      <description>Separate a list of string in english-language list fashion, just like the Ruby snippet listed earlier.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;def textList(listtext, sep1=', ', sep2=', and '):&lt;br /&gt;        return (len(listtext) &gt; 1 &lt;br /&gt;        and ("%s%s%s" % (sep1.join(listtext[:-1]), sep2, listtext[-1])) &lt;br /&gt;        or listtext[0])&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;['one'] -&gt; "one"&lt;br /&gt;['one', 'two', 'three'] -&gt; "one, two, and three"</description>
      <pubDate>Thu, 01 Sep 2005 17:39:14 GMT</pubDate>
      <guid>http://snippets.dzone.com/posts/show/620</guid>
      <author>jamwt (Jamie Turner)</author>
    </item>
  </channel>
</rss>
