比较两个字符串的最长的相同字符串 及其位置和百分比

  /// <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;
        }

 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值