Daily Report 2012.10.30

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Threading.Tasks;



namespace match0

{

    class Program

    {

        static public int match(string word,string keyword)

        {

            int matchDegree = -1;//word、keyword匹配级别

            string[] wordlist = word.Split(new char[] { ' ' },StringSplitOptions.RemoveEmptyEntries);

            int wlN = wordlist.Count();//word关键词数量

            



            //非模糊匹配,返回-1或3****************************************************************

            if (word.Length == 0 || keyword.Length == 0)//输入有空,返回-1

                return matchDegree;



            if (word == keyword)//word,keyword完全匹配,返回最高级3

            {

                matchDegree = 3;

                return matchDegree;

            }

            //**************************************************************************************



            //模糊匹配,返回0或1或2*****************************************************************暂未完全实现

            if (wlN == 1)//word只含一个关键词

            {



            }

            else //word含多个关键词

            {



            }

            //***************************************************************************************



            return matchDegree;//因错误等不明原因跳出,返回-1

        }



        static public int wordmatch(string w, string keyword)//单个关键词对keyword的模糊匹配,w为单个关键词

        {

            int wmatchDegree = 0;//w、keyword匹配级别

            List<int> wkDegree=new List<int>();

            string[] keywordlist = keyword.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);

            int klN = keywordlist.Count();//keyword关键词数量

            for (int i = 0; i < klN;i++ )

                wkDegree.Add(0);

            for (int j = 0; j < klN; j++)

            {

                wkDegree[j] = wkmatch(w, keywordlist[j]);

            }

            return wmatchDegree;

        }



        static public int wkmatch(string w, string k)//单个关键词对单个k的模糊匹配,k为keyword单个关键词

        {

            int wkDegree = 0;//w、k匹配级别

            int m, n;

            m = w.Length;

            n = k.Length;



            return wkDegree;

        }



        static int ChineseOrEnglish(string str)//中英文判断 暂未完全实现

        {

            int len = 0;

            byte[] b;



            for (int i = 0; i < str.Length; i++)

            {

                b = Encoding.Default.GetBytes(str.Substring(i, 1));

                if (b.Length > 1)

                    len += 2;

                else

                    len++;

            }

            return len;

        }





        static void Main(string[] args)//供测试用主函数提供各函数返回值

        {

            int a,b,c;

            string x = Console.ReadLine();

            string y = Console.ReadLine();

            a = match(x, y);

            b = ChineseOrEnglish(x);

            c = ChineseOrEnglish(y);

            Console.WriteLine(a);

            Console.WriteLine(b);

            Console.WriteLine(c);

            Console.WriteLine(x.Length);

            Console.WriteLine(y.Length);

        }

    }

}

主要实现了match算法的基本框架,match函数主要功能为判断word、keyword(都可能为由空格分隔的多个词)的匹配程度。

这是一个相对十分独立的模块,所以我先在一个单独的C#文件中编写。

几个难点还没有完全解决,汉字英文混杂问题、模糊匹配级别判断函数(与前一个有关)、函数对模糊程度的容忍程度的规定等。

基本判断过程都在上面的代码中。在汉字英文混杂问题解决后,算法会很快实现。

预计能在两天之内完成。

你可能感兴趣的:(port)