Example #1
0
        static void Main(string[] args)
        {
            var sb          = new StringBuilder();
            var levelGroups = new[] { ChineseNumber.UpperLevels, ChineseNumber.LowerLevels };
            var nums        = new int[9].Let(i => i + 1);

            foreach (var levels in levelGroups.AsKvPairs())
            {
                foreach (var level in levels.Value.AsKvPairs())
                {
                    foreach (var num in nums)
                    {
                        var snumber     = levels.Key == 0 ? ChineseNumber.GetString(num, x => x.Upper = true) : ChineseNumber.GetString(num);
                        var str         = $"{snumber}{level.Value}";
                        var pinyin      = Pinyin.GetString(str);
                        var simplified  = ChineseConverter.ToSimplified(str);
                        var traditional = ChineseConverter.ToTraditional(str);
                        var tag         = num * Math.Pow(10, level.Key);
                        sb.AppendLine($@"{" ".Repeat(12)}new ChineseWord {{ Pinyin = ""{pinyin}"", Simplified = ""{simplified}"", Traditional = ""{traditional}"", Tag = {tag} }},");
                    }
                }
            }

            var csFile = Build(sb.ToString());

            File.WriteAllText("../../../NumberWords.cs", csFile);

            Console.WriteLine("File saved: NumberWords.cs");
        }
Example #2
0
        public string Generate()
        {
            var sb          = new StringBuilder();
            var levelGroups = new[] { ChineseNumber.UpperLevels, ChineseNumber.LowerLevels };
            var nums        = new int[9].Let(i => i + 1);
            var total       = 0;

            foreach (var levels in levelGroups.AsKvPairs())
            {
                foreach (var level in levels.Value.AsKvPairs())
                {
                    foreach (var num in nums)
                    {
                        var snumber     = levels.Key == 0 ? ChineseNumber.GetString(num, x => x.Upper = true) : ChineseNumber.GetString(num);
                        var str         = $"{snumber}{level.Value}";
                        var simplified  = ChineseConverter.ToSimplified(str);
                        var traditional = ChineseConverter.ToTraditional(str);

                        var chineseWord = new ChineseWord
                        {
                            Simplified        = simplified,
                            Traditional       = traditional,
                            SimplifiedPinyin  = Pinyin.GetString(ChineseType.Simplified, simplified),
                            TraditionalPinyin = Pinyin.GetString(ChineseType.Traditional, traditional),
                            Tag = num * Math.Pow(10, level.Key),
                        };

                        var line = $"{" ".Repeat(12)}new {nameof(ChineseWord)} " +
                                   $"{{ " +
                                   $"{nameof(ChineseWord.Simplified)} = \"{chineseWord.Simplified}\"" +
                                   $", {nameof(ChineseWord.Traditional)} = \"{chineseWord.Traditional}\"" +
                                   $", {nameof(ChineseWord.SimplifiedPinyin)} = \"{chineseWord.SimplifiedPinyin}\"" +
                                   $", {nameof(ChineseWord.TraditionalPinyin)} = \"{chineseWord.TraditionalPinyin}\"" +
                                   $", {nameof(ChineseWord.Tag)} = {chineseWord.Tag}" +
                                   $" }},";
                        sb.AppendLine(line);
                        total += 1;
                    }
                }
            }

            sb.AppendLine($@"{" ".Repeat(12)}new {nameof(ChineseWord)} {{ Simplified = ""两"", Traditional = ""两"", SimplifiedPinyin = ""liang3"", TraditionalPinyin = ""liang3"", Tag = 2 }},");
            sb.AppendLine($@"{" ".Repeat(12)}new {nameof(ChineseWord)} {{ Simplified = ""两百"", Traditional = ""两百"", SimplifiedPinyin = ""liang3 bai3"", TraditionalPinyin = ""liang3 bai3"", Tag = 200 }},");
            sb.AppendLine($@"{" ".Repeat(12)}new {nameof(ChineseWord)} {{ Simplified = ""两千"", Traditional = ""两千"", SimplifiedPinyin = ""liang3 qian1"", TraditionalPinyin = ""liang3 qian1"", Tag = 2000 }},");
            total += 3;

            sb.AppendLine($@"{" ".Repeat(12)}// Total {total} words.");

            return(Wrap(sb.ToString()).Replace("she4", "shi2"));  // 拾 = shi2
        }
Example #3
0
        public void SimplifiedUpperTest()
        {
            var options = new ChineseNumberOptions {
                Simplified = true, Upper = true
            };

            Assert.Equal("壹", ChineseNumber.GetString(1, options));
            Assert.Equal("拾万零壹", ChineseNumber.GetString(10_0001, options));
            Assert.Equal("拾万零壹佰零壹", ChineseNumber.GetString(10_0101, options));
            Assert.Equal("拾万壹仟零壹", ChineseNumber.GetString(10_1001, options));
            Assert.Equal("拾万壹仟零壹拾", ChineseNumber.GetString(10_1010, options));

            Assert.Equal(1, ChineseNumber.GetNumber("壹"));
            Assert.Equal(10_0001, ChineseNumber.GetNumber("拾万零壹"));
            Assert.Equal(10_0101, ChineseNumber.GetNumber("拾万零壹佰零壹"));
            Assert.Equal(10_1001, ChineseNumber.GetNumber("拾万壹仟零壹"));
            Assert.Equal(10_1010, ChineseNumber.GetNumber("拾万壹仟零壹拾"));
        }
Example #4
0
        public void SimplifiedLowerTest()
        {
            var options = new ChineseNumberOptions {
                Simplified = true, Upper = false
            };

            Assert.Equal("一", ChineseNumber.GetString(1, options));
            Assert.Equal("十万零一", ChineseNumber.GetString(10_0001, options));
            Assert.Equal("十万零一百零一", ChineseNumber.GetString(10_0101, options));
            Assert.Equal("十万一千零一", ChineseNumber.GetString(10_1001, options));
            Assert.Equal("十万一千零一十", ChineseNumber.GetString(10_1010, options));

            Assert.Equal(1, ChineseNumber.GetNumber("一"));
            Assert.Equal(10_0001, ChineseNumber.GetNumber("十万零一"));
            Assert.Equal(10_0101, ChineseNumber.GetNumber("十万零一百零一"));
            Assert.Equal(10_1001, ChineseNumber.GetNumber("十万一千零一"));
            Assert.Equal(10_1010, ChineseNumber.GetNumber("十万一千零一十"));
        }
Example #5
0
        public void LowerTest()
        {
            var options = new ChineseNumberOptions {
                Simplified = false, Upper = false
            };

            Assert.Equal("一", ChineseNumber.GetString(1, options));
            Assert.Equal("一十万零一", ChineseNumber.GetString(10_0001, options));
            Assert.Equal("一十万零一百零一", ChineseNumber.GetString(10_0101, options));
            Assert.Equal("一十万一千零一", ChineseNumber.GetString(10_1001, options));
            Assert.Equal("一十万一千零一十", ChineseNumber.GetString(10_1010, options));

            Assert.Equal(1, ChineseNumber.GetNumber("一"));
            Assert.Equal(2, ChineseNumber.GetNumber("两"));
            Assert.Equal(22222, ChineseNumber.GetNumber("两万二千两百二十二"));
            Assert.Throws <ArgumentException>(() => ChineseNumber.GetNumber("两万二千两百二十两"));
            Assert.Equal(10_0001, ChineseNumber.GetNumber("一十万零一"));
            Assert.Equal(10_0101, ChineseNumber.GetNumber("一十万零一百零一"));
            Assert.Equal(10_1001, ChineseNumber.GetNumber("一十万一千零一"));
            Assert.Equal(10_1010, ChineseNumber.GetNumber("一十万一千零一十"));
        }