用過(guò)python的朋友應(yīng)該知道,python的string中有個(gè)replace函數(shù),其功能是實(shí)現(xiàn)字符串的替換,默認(rèn)情況下是替換所有,如果加入?yún)?shù)的話會(huì)根據(jù)設(shè)定的個(gè)數(shù)進(jìn)行替換,比如下面的例子:
>>> import string
>>> str1 = "ab1ab2ab3ab4"
>>> print string.replace(str1,"ab","cd")
cd1cd2cd3cd4
>>> print string.replace(str1,"ab","cd",1)
cd1ab2ab3ab4
>>> print string.replace(str1,"ab","cd",2)
cd1cd2ab3ab4
>>>
在c++中,我也想這么用……暫時(shí)還沒(méi)找到現(xiàn)成的,就自己寫(xiě)了個(gè)。
這里貼出來(lái)函數(shù)的代碼,也方便我以后使用:
std::string m_replace(std::string str,std::string pattern,std::string dstPattern,int count=-1)
{
std::string retStr="";
string::size_type pos;
int szStr=str.length();
int szPattern=pattern.size();
int i=0;
int l_count=0;
if(-1 == count) // replace all
count = szStr;
for(i=0; i<szStr; i++)
{
pos=str.find(pattern,i);
if(std::string::npos == pos)
break;
if(pos < szStr)
{
std::string s=str.substr(i,pos-i);
retStr += s;
retStr += dstPattern;
i=pos+pattern.length()-1;
if(++l_count >= count)
{
i++;
break;
}
}
}
retStr += str.substr(i);
return retStr;
}
好,就這些了,希望對(duì)你有幫助。