16,548
社区成员




BOOL chek(char* sour,CPtrArray* chararray)
{
BOOL re=TRUE;
int count=chararray->GetCount();
if (!count)
{
return TRUE;
}
for (int i=0;i<count;i++)
{
char* temp=(char*)chararray->GetAt(i);
int test=strcmp(sour,temp);
if(test==0)
{
re=FALSE;
break;
}
}
return re;
}
////////////////////
ULONG distilchar(LPCSTR sour, LPSTR* ppDest)
{
ULONG slen,jishu=0;
slen=strlen(sour);
char* temp1=new char[4];
CPtrArray chararray;
for (int i=0;i<slen;i++)
{
if (sour[i]<0)
continue;
if(isdigit((int)sour[i]))
{
temp1[jishu]=sour[i];
jishu++;
if (jishu==3)
{
jishu=0;
temp1[3]='\0';
if(chek(temp1,&chararray))
{
char* temp2=new char[4];
strcpy(temp2,temp1);
chararray.Add(temp2);
}
}
}
}
int count=chararray.GetCount();
if (count==0)
{
return 0;
}
char* temp=new char[count*3+count];
strcpy(temp,(char*)(chararray.GetAt(0)));
for (int i=1;i<count;i++)
{
strcat(temp,",");
char* charat=(char*)(chararray.GetAt(i));
strcat(temp,charat);
}
for (int i=0;i<count;i++)
{
char* charat=(char*)(chararray.GetAt(0));
chararray.RemoveAt(0);
delete charat;
}
delete [] temp1;
*ppDest=temp;
return count;
}
/////////////////////
//调用代码
char* test="123d的ff34df0532-34jh00,34,999858uugygu65545yniu6y8rgh0456y9tgj904jer687jhb[wrtk--965w3w90-945650945";
LPSTR dest;
distilchar(test,&dest);
delete dest;
//不考虑效率
ULONG analchar(LPCSTR sour, LPSTR* ppDest)
{
ULONG slen,dlen=0,tag=0;
slen=strlen(sour);
char* temp=new char[slen];
CPtrArray chararrar;//用来储存分割开来的字符串
for (int i=0;i<slen;i++)
{
if (sour[i]<0)
continue;
if(isdigit((int)sour[i]))
{
temp[dlen]=sour[i];
dlen++;tag++;
if (!(tag%3))
{
//在这里加上相同的数字判断代码,相同就删除
temp[dlen++]=',';
}
}
}
int lastcount=tag%3;
if (lastcount)
{
temp[dlen-lastcount-1]='\0';
}
temp[dlen-1]='\0';
*ppDest=temp;
return dlen-2;
}
//调用代码
char* test="123d的ff34df0532-34jh00,34,99980";
LPSTR dest;
analchar(test,&dest);
delete dest;