エッセンスはwhileのある1行。考えた人はすごいですね。1行でできてしまうんですから。半ば備忘録になりますが、少し説明しておきます。これは与えられた文字列strに元々カンマがある場合、そのカンマを外しておく処理です。カンマを外したものがnumに返ります。問題のwhileの行ですが、まず正規表現/^(-?\d+)(\d{3})/を検討してみます。:文字列の先頭という意味。:マイナス文字が0個か1個という意味。数字の符号のマイナスのことです。:0~9の10進数文字が1個以上という意味。:0~9の10進数文字が3個という意味。よって、正規表現/^(-?\d+)(\d{3})/は「文字列の先頭からマイナス文字がないか、もしくは1個だけあり、そのあとに0~9の数字が1個以上続き、さらに0~9の数字が3個ある」ということです。"1234567.8901"だとします。カッコがついているので、1234が$1に、567が$2になります。1234,567.8901になります。これがnumに代入され(1234,567.8901)、元々のnum(1234567.8901)と比較すると、文字列として異なります。したがって2回目のループに入ります。3回目となって、3回目のループに入る前に終了します。この複雑な処理が、実質1行で実現しているわけですから、本当にすごいscriptです。ちなみにGoogle検索すると、他にも3桁区切りを行うscriptが紹介されていましたが、何十行にもわたるものであったり、中にはそのままコピー・ペーストしてもエラーになるものもありました。このscriptが最高だと思います。このscriptでは例えば、+12345のように、プラス記号が先頭にある数字0012345のように、ゼロサプレスしていない数字だときれいな3桁区切りにしてくれませんが、それを考慮するscriptを作るのは、このwhileのある1行に比べればはるかに簡単です。この情報で大変助かりました。今日ではwebに接続できない環境での開発は考えられません。[編集]コメントありがとうございますコメントありがとうございます。お役に立てて幸いです。今後とも、よろしくお願いします。プロフィールAuthor:sookibizviz仕事の内容やソフトの紹介を交えながら、日々の悪戦苦闘を綴っていきます。