//本函数主要将/r或是/n替换为/r/n,

//本函数主要将/r或是/n替换为/r/n,因为冒泡时单个的/r或/n不会换行,影响显示
void CMainFrame::PreHandleChineseDesc(CString &strDesc)
{
 CString strResult("");
 CString strTemp;
 int iPosRN[2] = {-1,-1};  //数组的第一个表示找到/r的位置,第二个表示找到/n的位置
 int iFrontPos = 0;   //表示找到/r,/n的位置中的较前的一个
 while( 0 != strDesc.GetLength() )
 {
  iPosRN[0] = strDesc.Find("/r");
  iPosRN[1]= strDesc.Find("/n");

  //如果没有相关的回车或是换行符了
  if( (-1 == iPosRN[0] ) && (-1 == iPosRN[1] ) )
  {
   break; //没有相关的回车或是换行符了
  }
  //取小的且不是-1的那个
  if( (iPosRN[0] < iPosRN[1]) && (-1 != iPosRN[0] ))
  {
   iFrontPos = 0;
  }
  else
  {
   iFrontPos = 1;
  }
  
  strTemp = strDesc.Left(iPosRN[iFrontPos]);
  if( 0 != strTemp.GetLength() ) //这样的处理可以删除多个空行
  {
   strResult += strTemp;
   strResult +=CString("/r/n");
  }
  //如果存在连续的/n/r/n,处理也是正常的
  if( iPosRN[1-iFrontPos] == (iPosRN[iFrontPos]+1) )
  {
   strDesc = strDesc.Right(strDesc.GetLength() - iPosRN[1-iFrontPos]-1);
  }
  else
  {
   strDesc = strDesc.Right(strDesc.GetLength() - iPosRN[iFrontPos]-1);
  }
 }

 strResult += strDesc;
 strDesc = strResult;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值