[cpp] 月薪超过8K的人写的代码
Ken
ken.shao at gmail.com
Thu Oct 26 12:48:43 CST 2006
// * 去除原字符串中的类似字符串:"(1324kb" "(134.34kb" "(132KB" "约13423分" "约347秒"
// 即去除 "kb","分","秒" 前是 "(" 数字 "{" "约" 全角数字
// @ wchar_t* _wstr 为原字符串
void clear_num_wkb(wchar_t* _wstr)
{
if (!_wstr)
{
return;
}
wchar_t wszkb[8];
memset(wszkb, 0, sizeof(wszkb));
wchar_t* wcfind = find_wkb(_wstr, wszkb);
wchar_t* wcfind1 = NULL;
int nflag = 0;
wchar_t wctag[64];
wchar_t wctur[64];
int nit = 0;
do {
if (!wcfind)
{
break;
}
wcfind1 = wcfind + 1;
nflag = wcslen(wcfind);
memset(wctag, 0, sizeof(wctag));
nit = 0;
nflag = wcslen(_wstr) - nflag - 1;
wcsncpy(wctag+nit, _wstr+nflag, 1);
BOOL bTest = FALSE;
// 0-48 .-46 [-91 /-47 (-40 {-123 玼-32004 分-20998 0-65296 ?-63 '
'-20
while ((wctag[nit] >= 46 && wctag[nit] <= 59) ||
wctag[nit] == 20 ||
wctag[nit] == 40 ||
wctag[nit] == 63 ||
wctag[nit] == 91 ||
wctag[nit] == 123 ||
wctag[nit] == 32004 ||
wctag[nit] == 20998 ||
wctag[nit] >= 65296 && wctag[nit] <= 65305)
{
nit++;
nflag--;
wcsncpy(wctag+nit, _wstr+nflag, 1);
bTest = TRUE;
}
memset(wctur, 0, sizeof(wctur));
// turn right
nit--;
for (int i=nit; i>=0; i--)
{
wctur[nit-i] = wctag[i];
}
wcscpy(wctur+nit+1, wszkb);
// del the szflag in the string
if (bTest)
{
del_single_wtag(_wstr, wctur);
}
wcfind = find_wkb(wcfind1, wctag);
} while(wcfind);
}
第一次发帖,不知道大家对这个话题感兴趣否?
ps: 注意加重部分代码,这是一家做搜索的公司,:-D
Ken
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://codingnow.com/pipermail/cpp/attachments/20061026/2bf2eff8/attachment.html
More information about the Cpp
mailing list