zoukankan      html  css  js  c++  java
  • 比较两个字符串的最长的相同字符串 及其位置和百分比

      /// <summary>
            /// 
            /// </summary>
            /// <param name="DataKey"></param>
            /// <param name="DataSoure"></param>
            /// <param name="minPercentage"></param>
            /// <param name="maxPercentage"></param>
            /// <param name="minstarLoca"></param>
            /// <param name="maxstarLoca"></param>
            /// <returns></returns>
            public static string getSomeString(string DataKey
                                              ,string DataSoure
                                              ,out string minPercentage
                                              ,out string maxPercentage
                                              ,out int minstarLoca
                                              ,out int maxstarLoca) 
            {
                string strReturn = "";
                int strBeginStar = 0,strlength=1,maxlength=0;
                bool IsGoOn=true;
                string strTemp ="";
                //使用短的区匹配长的 加快速度
                string strKey, strSoure;
                strKey = DataKey.Length >= DataSoure.Length ? DataSoure : DataKey;
                strSoure = DataKey.Length > DataSoure.Length ? DataKey : DataSoure;
                minstarLoca = 0; maxstarLoca = 0; minPercentage = "0"; maxPercentage = "0";
                while (maxlength <= strKey.Length)
                 {
                    strTemp = strKey.Substring(strBeginStar, strlength);
                    while (strSoure.IndexOf(strTemp) > -1 && maxlength <= strKey.Length)
                    {
                        minstarLoca = strBeginStar;
                        maxstarLoca = strSoure.IndexOf(strTemp);
                        strReturn = strTemp;
                        strlength = strlength + 1;
                        maxlength = strlength + strBeginStar;
                        if (maxlength <= strKey.Length)
                        {
                            strTemp = strKey.Substring(strBeginStar, strlength);
                        }
                    }
                    strBeginStar = strBeginStar + 1;
                    maxlength = strlength + strBeginStar;     
                 }
                minPercentage = ((double)strReturn.Length * 100 / strSoure.Length).ToString();
                maxPercentage = ((double)strReturn.Length * 100 / strKey.Length).ToString();
                return strReturn;
            }

            protected void Button1_Click(object sender, EventArgs e)
            {
                string strMax,strMin;
                int minstar,maxstar;
                string str = getSomeString(TextBox1.Text.Trim(), TextBox2.Text.Trim(), out strMin, out strMax, out minstar, out maxstar);
                Label1.Text = "最大百分比为:" + strMax + "最小百分比为:" + strMin + "在小字符串中开始位置:" + minstar.ToString() + "在大字符串中开始位置:" + maxstar.ToString()+ "<br/>匹配字符串为:" + str;
            }

     
  • 相关阅读:
    WinAPI: GetClassName
    Delphi 常用API 函数
    DELPHI加密字串(异或运算加密)
    delphi中获得进程列表或想要的进程(枚举进程、遍历进程)
    如何把窗体关闭到系统托盘
    让窗体接受拖放, 并获取拖过来的文件信息
    如何获取图片中第一个像素的颜色值?
    android 使用get和post将数据提交到服务器
    android 简单的读写联系人
    android ContentObserver内容观察者基本使用
  • 原文地址:https://www.cnblogs.com/dingdingmao/p/3146528.html
Copyright © 2011-2022 走看看