VC里面如何拆分含汉字与字母的字符串

王朝vc·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

给别人的程序打补丁,出现了需要拆分含汉字,字母的字符串的情况,到网上搜到的都是同一段代码

"************* 截取字符串 **************

Function InterceptString(txt,length)

txt=trim(txt)

x = len(txt)

y = 0

if x >= 1 then

for ii = 1 to x

if asc(mid(txt,ii,1)) < 0 or asc(mid(txt,ii,1)) >255 then "如果是汉字

y = y + 2

else

y = y + 1

end if

if y >= length then

txt = left(trim(txt),ii) "字符串限长

exit for

end if

next

InterceptString = txt

else

InterceptString = ""

end if

End Function

结果就是测试有些情况下拆分出现乱码,郁闷了好半天,终于发现是网上的这段到处转贴的代码是有错误的,其实这个错误很简单的,就是因为自己没有仔细检查一下就用结果,^_^,这次偶给更正了,希望以后看到的人不会郁闷了.

void CAaaView::OnButton1()

{

// TODO: Add your control notification handler code here

CString ChargeItemName;

CString aa = "9494858受得失测试585858585888d888888888888888";

int len=0;

ChargeItemName=InterceptString(len,aa);

AfxMessageBox(ChargeItemName);

len=ChargeItemName.GetLength();

ChargeItemName=aa.Mid(len);

AfxMessageBox(ChargeItemName);

}

CString CAaaView::InterceptString(int qlen, CString strSource)

{

int len,i,y;

CString sTemp,sreturn,ceshi;

strSource.TrimLeft();strSource.TrimRight();

len=strSource.GetLength();

y=0;

sTemp=strSource.Right(len-qlen);

for(i=0;i<len;i++)

{

if(sTemp[y]<0 || sTemp[y]>255)

y=y+2;

else

y=y+1;

if(y>=26)

break;

}

ceshi.Format("%d",y);

AfxMessageBox(ceshi);

sreturn=sTemp.Left(y);

return sreturn;

}

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航