/*
* strOrg 原字符串
* strPartern 匹配方式
* *需要匹配的值,代表单个或多个字符
* vecMatchValue:输出值
* 举例:
* strOrg = "Success rate is 100 percent (20|20), round-trip min/avg/max = 12.0|11.4|9.8ms";
* string strPartern = "Success rate is * percent (*|*), round-trip min/avg/max = *|*|*ms";
* cout:20 20 12.0 11.4 9.8
*/
int MatchStr(string strOrg, string strPartern, vector<string> &vecMatchValue)
{
if (strPartern.size() > strOrg.size())
return 1;
//从strOrg 中获取strPnFirstKey的开始位置,从开始位置与strPartern 比较
int nParternLen = strPartern.size();
int i = 0, j = 0;
for (; i < strOrg.size(), j < strPartern.size(); ++i, ++j)
{
//cout<<i<<" strOrg.size():"<<strOrg.size()<<endl;
if (i>strOrg.size())
return 1;
if (strOrg.at(i) == strPartern.at(j))
{
continue;
}
else if (strPartern.at(j) == '*')
{
string strNeed = "";
strNeed.substr(0 ,10);
char szNextC;
if (j < nParternLen - 1)
{
szNextC = strPartern.at(++j);
}
else
{
strNeed = strOrg.substr(i, strOrg.size() - i);
vecMatchValue.push_back(strNeed);
cout << strNeed << endl;
return 0;
}
for (; i < strOrg.size();i++)
{
if (szNextC == strOrg.at(i))
{
cout << strNeed << endl;
vecMatchValue.push_back(strNeed);
break;
}
else
{
if (j != nParternLen)
{
strNeed += strOrg.at(i);
}
}
}
}
else
{
return 1;
}
}
return 0;
}
样本取值--代替正则表达式,效率高
最新推荐文章于 2022-10-13 22:35:10 发布