Exemple #1
0
 public static StateType GetNextState(char c)
 {
     if (ALL_NUMs.Contains(c))
     {
         return(StateType.num);
     }
     if ("∶::比".Contains(c))
     {
         return(StateType.colon);
     }
     if ("//".Contains(c))
     {
         return(StateType.frac);
     }
     if ("±+—-+".Contains(c))
     {
         return(StateType.signed);
     }
     if ("..".Contains(c))
     {
         return(StateType.dec);
     }
     if ('·' == c)
     {
         return(StateType.cdot);
     }
     if ("%%‰".Contains(c))
     {
         return(StateType.percent);
     }
     return(StateType.unknown);
 }
        /// <summary>
        /// 是否是年份(不含月日),注意input字符串之后的字符必须为'年'才有意义
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        public static bool IsYear(string input)
        {
            if (string.IsNullOrWhiteSpace(input))
            {
                return(false);
            }

            input = input.Trim();
            //if (input.StartsWith("公元"))                   // 这里的input 是经过分词后的单词,所以不需要考虑“公元前”,“公元”等前缀
            //{
            //    if (input.Length > 2 && input[2] == '前')
            //        input = input.Substring(3);
            //    else
            //        input = input.Substring(2);

            //    if (input.Length == 0) return false;
            //}

            if (input.Length <= 4 && input.All(c => ALL_NUMs.Contains(c)))
            {
                return(true);
            }

            if (input.Length == 2 && TIANGAN.Contains(input[0]) && DIZHI.Contains(input[1]))
            {
                return(true);
            }
            return(false);
        }