예제 #1
0
        private string Hanzi2Pinyin(RequestModel request)
        {
            var result = new StringBuilder();

            // 解析从客户端来的输出格式设置
            PinyinFormat format = PinyinUtil.ParseFormat(request.ToneType) |
                                  PinyinUtil.ParseFormat(request.CaseType) |
                                  PinyinUtil.ParseFormat(request.VType);

            foreach (char ch in request.Key)
            {
                if (!PinyinUtil.IsHanzi(ch))
                {// 不是汉字直接追加
                    result.Append(ch);
                    continue;
                }

                // 是汉字才处理

                // 是否只取第一个拼音
                if (request.Multi.Equals("first", StringComparison.OrdinalIgnoreCase))
                {
                    // 拼音间追加一个空格,这里如果是多间字,拼音可能不准确
                    result.AppendFormat("{0} ", Pinyin4Net.GetFirstPinyin(ch, format));
                    continue;
                }

                string[] py = Pinyin4Net.GetPinyin(ch, format);
                result.AppendFormat("({0}) ", string.Join(",", py));
            }

            return(result.ToString());
        }
예제 #2
0
        public void TestFirstLetter1()
        {
            const string s        = "JavaScript 爱好者 传说";
            const string expected = "JavaScript [a] [h] [z]  [c] [s]";
            var          pinyin   = Pinyin4Net.GetPinyin(s, null, false, true, false);

            Assert.AreEqual(expected, pinyin);
        }
예제 #3
0
        public void TestFirstLetter2()
        {
            const string s        = "JavaScript 爱好者 传说";
            const string expected = "JavaScript [a] [h] [z]  [c,z] [s,y]";
            var          pinyin   = Pinyin4Net.GetPinyin(s, PinyinFormat.None, false, true, true);

            Assert.AreEqual(expected, pinyin);
        }
예제 #4
0
 public void TestUpdate()
 {
     HanziAssert('吃', new string[] { "chi1", "ji2" });
     // 通过第二个参数 true 替换了原来的拼音 chi ji
     Pinyin4Net.UpdateMap(new System.Collections.Generic.Dictionary <char, string[]> {
         { '吃', new string[] { "qie", "qia" } }
     }, true);
     HanziAssert('吃', new string[] { "qie", "qia" });
 }
예제 #5
0
        public void TestString1()
        {
            const string s        = "Javascript 爱好者 传说";
            var          format   = new PinyinOutputFormat();
            const string expected = "Javascript ài hăo zhĕ  chuán shuō";
            var          pinyin   = Pinyin4Net.GetPinyin(s, format);

            Assert.AreEqual(expected, pinyin);
        }
예제 #6
0
        public void TestString6()
        {
            const string s        = "JavaScript 爱好者 传说";
            var          format   = new PinyinOutputFormat(null, CaseFormat.LOWERCASE.ToString(), VCharFormat.WITH_U_UNICODE.ToString());
            const string expected = "javascript ài hăo zhĕ  chuán shuō";
            var          pinyin   = Pinyin4Net.GetPinyin(s, format, true, false, false);

            Assert.AreEqual(expected, pinyin);
        }
예제 #7
0
        public void TestString4()
        {
            const string s        = "Javascript 爱好者 传说";
            var          format   = new PinyinOutputFormat(null, CaseFormat.UPPERCASE.ToString(), VCharFormat.WITH_U_UNICODE.ToString());
            const string expected = "JAVASCRIPT ÀI HĂO ZHĔ  CHUÁN SHUŌ";
            var          pinyin   = Pinyin4Net.GetPinyin(s, format, true, false, false);

            Assert.AreEqual(expected, pinyin);
        }
예제 #8
0
        public void TestString2()
        {
            const string s        = "Javascript 爱好者 传说";
            var          format   = new PinyinOutputFormat(null, CaseFormat.CAPITALIZE_FIRST_LETTER.ToString(), VCharFormat.WITH_U_UNICODE.ToString());
            const string expected = "Javascript Ài Hăo Zhĕ  Chuán Shuō";
            var          pinyin   = Pinyin4Net.GetPinyin(s, format);

            Assert.AreEqual(expected, pinyin);
        }
예제 #9
0
        public void TestString4()
        {
            const string s      = "Javascript 爱好者 传说";
            var          format = PinyinFormat.WITH_TONE_MARK |
                                  PinyinFormat.UPPERCASE |
                                  PinyinFormat.WITH_U_UNICODE;
            const string expected = "JAVASCRIPT ÀI HĂO ZHĔ  CHUÁN SHUŌ";
            var          pinyin   = Pinyin4Net.GetPinyin(s, format, true, false, false);

            Assert.AreEqual(expected, pinyin);
        }
예제 #10
0
        public void TestString2()
        {
            const string s      = "Javascript 爱好者 传说";
            var          format = PinyinFormat.WITH_TONE_MARK |
                                  PinyinFormat.CAPITALIZE_FIRST_LETTER |
                                  PinyinFormat.WITH_U_UNICODE;
            const string expected = "Javascript Ài Hăo Zhĕ  Chuán Shuō";
            var          pinyin   = Pinyin4Net.GetPinyin(s, format);

            Assert.AreEqual(expected, pinyin);
        }
예제 #11
0
        public void TestString1()
        {
            const string s      = "Javascript 爱好者 传说";
            var          format = PinyinFormat.WITH_TONE_MARK |
                                  PinyinFormat.LOWERCASE |
                                  PinyinFormat.WITH_U_UNICODE;
            const string expected = "Javascript ài hăo zhĕ  chuán shuō";
            var          pinyin   = Pinyin4Net.GetPinyin(s, format);

            Assert.AreEqual(expected, pinyin);
        }
예제 #12
0
        public void TestArray()
        {
            const string s        = "JavaScript 爱好者 传说";
            var          expected = new List <PinyinItem> {
                new PinyinItem('J'),
                new PinyinItem('a'),
                new PinyinItem('v'),
                new PinyinItem('a'),
                new PinyinItem('S'),
                new PinyinItem('c'),
                new PinyinItem('r'),
                new PinyinItem('i'),
                new PinyinItem('p'),
                new PinyinItem('t'),
                new PinyinItem(' '),
                new PinyinItem('爱')
                {
                    "ai4"
                },
                new PinyinItem('好')
                {
                    "hao3", "hao4"
                },
                new PinyinItem('者')
                {
                    "zhe3"
                },
                new PinyinItem(' '),
                new PinyinItem('传')
                {
                    "chuan2", "zhuan4"
                },
                new PinyinItem('说')
                {
                    "shuo1", "shui4", "yue4"
                }
            };
            var pinyin = Pinyin4Net.GetPinyinArray(s, PinyinFormat.None);

            for (int i = 0; i < expected.Count; i++)
            {
                Assert.IsTrue(expected[i].Equals(pinyin[i]));
            }
        }
예제 #13
0
        public string Index(RequestModel request)
        {
            try
            {
                // 请求参数不为空才处理
                if (string.IsNullOrEmpty(request.Key))
                {
                    return(string.Empty);
                }
                if (request.Cmd == "0")
                {
                    return(Hanzi2Pinyin(request));
                }

                string[] hanzi = Pinyin4Net.GetHanzi(request.Key, request.MatchAll);
                return(string.Join(",", hanzi));
            }

            catch (Exception ex)
            {
                return(ex.Message);
            }
        }
예제 #14
0
        public async Task <bool> StoreTelemetryAsync(RawMsg msg)
        {
            bool result = false;

            try
            {
                CheckDataBase();
                List <string> lst = new List <string>();
                msg.MsgBody.ToList().ForEach(kp =>
                {
                    if (kp.Value != null)
                    {
                        TelemetryData tdata = new TelemetryData()
                        {
                            DateTime = DateTime.Now, DeviceId = msg.DeviceId, KeyName = kp.Key, Value_DateTime = new DateTime(1970, 1, 1)
                        };
                        tdata.FillKVToMe(kp);
                        string _type  = "";
                        string _value = "";
                        // value_boolean bool, value_string binary(4096), value_long bigint,value_datetime timestamp,value_double double,value_json binary(4096) ,value_xml binary
                        switch (tdata.Type)
                        {
                        case DataType.Boolean:
                            _type  = "value_boolean";
                            _value = tdata.Value_Boolean.ToString().ToLower();
                            break;

                        case DataType.String:
                            _type  = "value_string";
                            _value = $"'{tdata.Value_String?.Replace("'", "\\'")}'";
                            break;

                        case DataType.Long:
                            _type  = "value_long";
                            _value = $"{tdata.Value_Long}";
                            break;

                        case DataType.Double:
                            _type  = "value_double";
                            _value = $"{tdata.Value_Double}";
                            break;

                        case DataType.Json:        //td 一条记录16kb , 因此为了写更多数据, 我们json  xml binary 全部使用 string
                            _type  = "value_string";
                            _value = $"'{tdata.Value_Json?.Replace("'", "\\'")}'";
                            break;

                        case DataType.XML:
                            _type  = "value_string";
                            _value = $"'{tdata.Value_XML?.Replace("'", "\\'")}'";
                            break;

                        case DataType.Binary:
                            _type  = "value_string";
                            _value = $"\"{Hex.ToHexString(tdata.Value_Binary)}\"";
                            break;

                        case DataType.DateTime:
                            _type  = "value_datetime";
                            _value = $"{tdata.Value_DateTime.Subtract(new DateTime(1970, 1, 1, 0, 0, 0, 0)).TotalMilliseconds}";
                            break;

                        default:
                            break;
                        }
                        string vals = $"device_{tdata.DeviceId:N}_{ Pinyin4Net.GetPinyin(tdata.KeyName, PinyinFormat.WITHOUT_TONE).Replace(" ", string.Empty).Replace("@", string.Empty)} USING telemetrydata TAGS('{tdata.DeviceId:N}','{tdata.KeyName}')  (ts,value_type,{_type}) values (now,{(int)tdata.Type},{_value})";
                        lst.Add(vals);
                    }
                });

                TaosConnection _taos = _taospool.Get();
                if (_taos.State != System.Data.ConnectionState.Open)
                {
                    _taos.Open();
                }
                var cmd = _taos.CreateCommand($"INSERT INTO {string.Join("\r\n", lst)}");
                _logger.LogInformation(cmd.CommandText);
                int dt = await cmd.ExecuteNonQueryAsync();

                _taospool.Return(_taos);
                _logger.LogInformation($"数据入库完成,共数据{lst.Count}条,写入{dt}条");
            }
            catch (TaosException ex)
            {
                _logger.LogError(ex, $"{msg.DeviceId}数据处理失败{ex.ErrorCode}-{ex.Message} {ex.InnerException?.Message}");
            }
            catch (Exception ex)
            {
                _logger.LogError(ex, $"{msg.DeviceId}数据处理失败{ex.Message} {ex.InnerException?.Message} ");
            }
            return(result);
        }
예제 #15
0
        public static string GetPinyin(string input)
        {
            var format = new PinyinOutputFormat(ToneFormat.WITHOUT_TONE, CaseFormat.LOWERCASE, VCharFormat.WITH_U_UNICODE);

            return(Pinyin4Net.GetPinyin(input, format));
        }
예제 #16
0
        /// <summary>
        /// 判断拼音格式
        /// </summary>
        /// <param name="hanzi"></param>
        /// <param name="expected"></param>
        /// <param name="format"></param>
        private void PinyinFormatAssert(char hanzi, string expected, PinyinOutputFormat format)
        {
            var fmted = Pinyin4Net.GetUniqueOrFirstPinyinWithFormat(hanzi, format);

            Assert.AreEqual(expected, fmted);
        }
예제 #17
0
        /// <summary>
        /// 判断汉字与读音数组
        /// </summary>
        /// <param name="hanzi"></param>
        /// <param name="expected"></param>
        private void HanziAssert(char hanzi, string[] expected)
        {
            var actual = Pinyin4Net.GetPinyin(hanzi);

            assertArrayAreEquals(expected, actual);
        }
예제 #18
0
        public void FirstOfMultiPinyin()
        {
            var pinyin = Pinyin4Net.GetFirstPinyin('传');

            Assert.AreEqual("chuan2", pinyin);
        }
예제 #19
0
        /// <summary>
        /// 判断拼音格式
        /// </summary>
        /// <param name="hanzi"></param>
        /// <param name="expected"></param>
        /// <param name="format"></param>
        private void PinyinFormatAssert(char hanzi, string expected, PinyinFormat format)
        {
            var fmted = Pinyin4Net.GetFirstPinyin(hanzi, format);

            Assert.AreEqual(expected, fmted);
        }