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