数値を3桁ごとに区切る正規表現
以下の 3 桁で区切る正規表現が面白かったので、C# でやってみました。
using System; using System.Collections.Generic; using System.Linq; using System.Text.RegularExpressions; // 数値を 3 桁で区切る正規表現 // 参考: // http://qiita.com/think49/items/b1bf02e5f4cfbb200b84 class TestRegex { static void Main() { string[] tests = { "1", "12", "123", "1234", "12345", "123456", "1234567", "12345678", "123456789", "1234567890", }; // 文字列の前に @ を付けると、エスケープ無効になります。 var reg = new Regex(@"(?=(?:\d{3})+$)"); // 文字列の前に @ を付けない場合 // var reg = new Regex("(?=(?:\\d{3})+$)"); foreach (var t in tests) { var ss = reg.Split(t).SkipWhile(s => s.Length == 0); Console.WriteLine(string.Join(",", ss)); } } }
先頭の空文字を取り除くために、SkipWhile
を入れています。リンク先の JavaScript のコードでは空文字は作られないようなのですが、C# との違いはよく分かっていません。
実行結果です。
1 12 123 1,234 12,345 123,456 1,234,567 12,345,678 123,456,789 1,234,567,890