要在字符串(包含中文、英文、数字)中寻找出连续数字符串,且长度为3,不足前面补0。可用正则表达式实现,如下:
#include <regexp.h>
AnsiString TForm1::GetDigtal(AnsiString strSource)
{
char szReg[]="[0-9]+";//正则表达式,表示一个或多个'0'到'9'的字符串
char szStr[20]={0};//待匹配的字符串
strcpy(szStr,strSource.c_str());
std::string sTemp = UTF8_To_string(szStr);//如果字符串中包含中文,须先转换
AnsiString strTemp;
TRegexp regex(szReg);
for( size_t len=0,nPos=regex.find(sTemp.c_str(),&len);//用find查找匹配的字符串。nPos返回子串位置[size_t(-1)表示没找到匹配的字符串],len返回子串长度
nPos != size_t(-1);
nPos = regex.find(sTemp.c_str(),&len,nPos+len))//从nPos+len位置开始继续查找...
{
strTemp = AnsiString().sprintf("%.*s\n",len,sTemp.c_str()+nPos);//打印出查找结果
}
strTemp = AnsiString().sprintf("%03d",atoi(strTemp.c_str()));
return strTemp;
}