예제 #1
0
        public void TestMethod2()
        {
            var source = "八hello三一OO";
            var str    = DataConvertHelper.ChineseNumberAnalysis(source);

            Console.WriteLine($"source: {source}");
            Console.WriteLine($"result: {str}");
        }
예제 #2
0
        /// <summary>
        /// 单选题解析
        /// 解析用户回答,获取下一题
        /// </summary>
        /// <param name="uanswer">用户答题对象</param>
        /// <param name="question">问题对象</param>
        /// <param name="answer">用户答案文本</param>
        /// <returns>下一题</returns>
        private WeiExecuteResult SingleCheckAnalysis(UserAnswerDetail uanswer, Question question, UserAnswerDetail nuseranswerdetail)
        {
            decimal?next   = null; // decimal.Floor(question.Sort + 1);
            var     qalist = question.QuestionAnswerList.OrderBy(x => x.Sort);

            string answer = DataConvertHelper.ChineseNumberAnalysis(uanswer.Answer).ToLower();

            if (!question.QuestionItemList.Any(x => answer.IndexOf(x.Code.ToLower()) != -1))
            {
                return(WeiExecuteResultHelper.Failed(this._propertyService.GetValue("Answer.NotConsistent")));
            }

            string         keycode = null;
            QuestionAnswer qamodel = null;

            foreach (var qanswer in qalist)
            {
                var tmpQ = qanswer.AnswerKeys.ToLower().Split('|');
                keycode = tmpQ.FirstOrDefault(y =>
                {
                    if (string.IsNullOrEmpty(y))
                    {
                        return(false);
                    }
                    if (y == "*")
                    {
                        return(true);
                    }

                    var tmp2    = y.ToLower().Split('&');
                    bool result = !tmp2.Any(z => answer.IndexOf(z) == -1);
                    return(result);
                });
                if (!string.IsNullOrEmpty(keycode))
                {
                    qamodel = qanswer;
                    break;
                }
            }

            //if (qamodel == null)
            //{
            //    return WeiExecuteResultHelper.Failed(this._propertyService.GetValue("Answer.NotConsistent"));
            //}

            if (qamodel != null)
            {
                nuseranswerdetail.QCode = keycode;
                //if (qamodel.Next != null)
                next = qamodel.Next;
            }
            else
            {
                next = decimal.Floor(question.Sort + 1);
            }

            return(WeiExecuteResultHelper.Success(null, next));
        }
예제 #3
0
        /// <summary>
        /// 多选题解析
        /// 解析用户回答,获取下一题
        /// </summary>
        /// <param name="uanswer">用户答题对象</param>
        /// <param name="question">问题对象</param>
        /// <param name="answer">用户答案文本</param>
        /// <returns>下一题</returns>
        private WeiExecuteResult MultiCheckAnalysis(UserAnswerDetail uanswer, Question question, UserAnswerDetail nuseranswerdetail)
        {
            decimal?next = null; // decimal.Floor(question.Sort + 1);
            // 用户的答案数组
            //var tmpU = uanswer.Answer.ToCharArray().Distinct().Except(CommonHelper.SPECIALCHARACTERS);
            var qalist = question.QuestionAnswerList.OrderBy(x => x.Sort);

            string answer = DataConvertHelper.ChineseNumberAnalysis(uanswer.Answer).ToLower();

            if (!question.QuestionItemList.Any(x => answer.IndexOf(x.Code.ToLower()) != -1))
            {
                return(WeiExecuteResultHelper.Failed(this._propertyService.GetValue("Answer.NotConsistent")));
            }

            string         keycode = null;
            QuestionAnswer qamodel = null;

            switch (question.MatchingType)
            {
            case MatchingType.Multiple:
            {
                foreach (var qanswer in qalist)
                {
                    var tmpQ = qanswer.AnswerKeys.ToLower().Split('|');

                    keycode = tmpQ.FirstOrDefault(y =>
                        {
                            if (string.IsNullOrEmpty(y))
                            {
                                return(false);
                            }
                            if (y == "*")
                            {
                                return(true);
                            }

                            var tmp2    = y.ToLower().Split('&');
                            bool result = !tmp2.Any(z => answer.IndexOf(z) == -1);
                            return(result);
                        });
                    if (!string.IsNullOrEmpty(keycode))
                    {
                        UserAnswerQueue uaqueue = new UserAnswerQueue()
                        {
                            QuestionAnswer_Id = qanswer.Id,
                            UserAnswer_Id     = uanswer.UserAnswer_Id,
                            Status            = 0,
                            QCode             = keycode
                        };
                        this._userAnswerQueueRepository.Insert(uaqueue);
                    }
                }
            }
            break;

            default:
            {
                foreach (var qanswer in qalist)
                {
                    var tmpQ = qanswer.AnswerKeys.ToLower().Split('|');

                    keycode = tmpQ.FirstOrDefault(y =>
                        {
                            if (string.IsNullOrEmpty(y))
                            {
                                return(false);
                            }
                            if (y == "*")
                            {
                                return(true);
                            }

                            var tmp2    = y.ToLower().Split('&');
                            bool result = !tmp2.Any(z => answer.IndexOf(z) == -1);
                            return(result);
                        });
                    if (!string.IsNullOrEmpty(keycode))
                    {
                        qamodel = qanswer;
                        break;
                    }
                }
            }
            break;
            }

            //if (qamodel == null)
            //{
            //    return WeiExecuteResultHelper.Failed(this._propertyService.GetValue("Answer.NotConsistent"));
            //}
            if (qamodel != null)
            {
                nuseranswerdetail.QCode = keycode;
                //if (qamodel.Next != null)
                next = qamodel.Next;
            }
            else
            {
                next = decimal.Floor(question.Sort + 1);
            }

            //nuseranswerdetail.QCode = keycode;
            //next = qamodel.Next;

            return(WeiExecuteResultHelper.Success(null, next));
        }