免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: flw
打印 上一主题 下一主题

【原创】超强版 Trim 横空出世! [复制链接]

论坛徽章:
0
101 [报告]
发表于 2010-10-22 14:12 |只看该作者
都是牛人啊.

论坛徽章:
0
102 [报告]
发表于 2010-11-02 16:41 |只看该作者
对于UNICODE,UTF-8,能正确工作否?

论坛徽章:
0
103 [报告]
发表于 2011-01-10 17:19 |只看该作者
嗯,还不错。

论坛徽章:
0
104 [报告]
发表于 2011-01-25 11:43 |只看该作者
void trim(char * str){

}

论坛徽章:
0
105 [报告]
发表于 2011-01-25 12:39 |只看该作者
原则上不浪费脑细胞的代码,除了去研究这点小技巧,还能干啥?

论坛徽章:
0
106 [报告]
发表于 2011-01-25 12:43 |只看该作者
FLW的处女贴吗?  

蜜桃成熟时

论坛徽章:
0
107 [报告]
发表于 2011-01-25 13:57 |只看该作者
  1. char * trim(char * str){
  2.         if(*str==NULL){
  3.                 return str;
  4.         }
  5.        
  6.         char * st = NULL;
  7.         char * end = NULL;

  8.         for(;*str;str++){
  9.                 if(*str!=' '&&*str!='\t'){
  10.                         if(st==NULL){
  11.                                 st = str;
  12.                         }else{
  13.                                 end = str;
  14.                         }
  15.                 }
  16.         }//end for

  17.         if(st!=NULL){
  18.                 if(end==NULL){
  19.                         str = st;
  20.                         *++st = 0;
  21.                 }else{
  22.                         str = st;
  23.                         *++end = 0;
  24.                 }
  25.         }
  26.         return str;
  27. }
复制代码

论坛徽章:
1
摩羯座
日期:2013-11-14 15:56:09
108 [报告]
发表于 2011-01-26 22:22 |只看该作者
本帖最后由 放纵思想 于 2011-01-26 22:26 编辑

void trim( char *str )
{

        if ( str == NULL )        return;

        char *src = str;

        char *begin = NULL, *end = NULL;

        for(begin = str; *str==' '; ++str, ++begin)
                ;
        for(end = str; *str; ++str)
                if(*str != ' ') end = str;

        *(end + 1) = 0;

        memmove(src, begin, end-begin+2);
        
}

论坛徽章:
0
109 [报告]
发表于 2011-01-29 14:26 |只看该作者

trim = ltrim + rtrim

论坛徽章:
0
110 [报告]
发表于 2011-09-11 14:29 |只看该作者
本帖最后由 snowboy9859 于 2011-09-11 14:31 编辑

回复 7# flw

我在您牛逼的代码的基础上改编了一下,能帮我点评一下这个代码不?这样做少了字符的移动,应该效率会高一点吧。
  1. char * trim( char *str )
  2. {
  3.         char *head, *tail = NULL;
  4.        
  5.         if ( str == NULL )
  6.                 return str;
  7.        
  8.         for( head = str; *str; str++ )
  9.         {
  10.                 if ( *str != ' ' && *str != '\t' )
  11.                 {                       
  12.                         if (tail == NULL)
  13.                         {
  14.                                 head = str;
  15.                         }
  16.                         tail = str+1;
  17.                 }               
  18.         }
  19.        
  20.         if ( tail )
  21.                 *tail = 0;
  22.         else
  23.                 *head = 0;
  24.        
  25.         return head;
  26. }
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP