zoukankan      html  css  js  c++  java
  • C++ 实现Trim

    一、字符串去空格(没有处理字符串中间的空格)

    lTrim:除去字符串开头的空格    eg."    abc123    " --> "abc123    "

    rTrim:除去字符串末尾的空格    eg."    abc123    " --> "    abc123"

    Trim:除去字符串开头和末尾的空格  eg."    abc123    " --> "abc123"

    品红色为空格

    1.去除开头的空格

    void lTrim(char * str)
    {
        int i , len ;
    
        len = strlen( str ) ;
        for( i=0; i<len; i++)
        {
            if( str[i] != ' ') break ;
        }
        memmove(str,str+i,len-i+1);
        return ;
    }

    2.去除末尾的空格

    void rTrim(char * str)
    {
        int i,len ;
    
        len = strlen( str ) ;
        for(i = len-1;i>=0;i--)
        {
            if( (str[i] != ' ')&&(str[i]!=0x0a)&&(str[i]!=0x0d) )  break ;
        }
        str[i+1] = 0 ;
        return ;
    }

    3.去除开头和末尾的空格

    void Trim(char * str)
    {
        int i , len ;
    
        //先去除左边的空格
        len = strlen( str ) ;
        for( i=0; i<len; i++)
        {
            if( str[i] != ' ') break ;
        }
        memmove(str,str+i,len-i+1);
    
        //再去除右边的空格
        len = strlen( str ) ;
        for(i = len-1; i>=0; i--)
        {
            if(str[i] != ' ') break ;
        }
        str[i+1] = 0 ;
    
        return ;
    }

    也可以这样

    void Trim(char * str)
    {
      lTrim(str);
      rTrim(str);
    }

    注:1.这里没有处理字符串中间的空格  eg."   abc   123   " -->  "abc   123"

      2.这里只去除了“空格”和末尾的“回车”、“换行”符,其他的可以根据需要添加

    " "     (ASCⅡ 32(0x20))    一个空格
    "	"    (ASCⅡ 9(0x09))     tab键
    "
    "    (ASCⅡ 10 (0x0A))   换行符
    "
    "    (ASCⅡ 13 (0x0D))   a carriage return.
    ""    (ASCⅡ 0 (0x00))    空字符
    "x0B"   (ASCⅡ 11 (0x0B))   a vertical tab.

    二、从pstr中删除所有rmchar字符

      包括字符串中间的字符: eg.空格(  ) "   abc   123   " -->  "abc123"  eg.逗号(,) ",,,abc,,,123,,," -->  "abc123"

    //从pstr中删除所有rmchar字符
    void TrimEx(char *pstr,char rmchr)
    {
        char szOut[500];
        memset(szOut,0,sizeof(szOut));
        if (strlen(pstr)>sizeof(szOut))
            return;
    
        int index=0;
        for(int i=0;i<strlen(pstr);i++)
        {
            if( pstr[i] != rmchr)
            {
                szOut[index++]=pstr[i];
            }
        }
        strcpy(pstr,szOut);
    }

    三、附录:在网上找到的其他“去除开头和末尾空格”的方法,也拷贝下,根据需要选择

    A.

    inline string&  lTrim(string   &ss)   
    {   
        string::iterator   p=find_if(ss.begin(),ss.end(),not1(ptr_fun(isspace)));   
        ss.erase(ss.begin(),p);   
        return  ss;   
    }   
    
    inline  string&  rTrim(string   &ss)   
    {   
        string::reverse_iterator  p=find_if(ss.rbegin(),ss.rend(),not1(ptr_fun(isspace)));   
        ss.erase(p.base(),ss.end());   
        return   ss;   
    }   
    
    inline   string&   trim(string   &st)   
    {   
        lTrim(rTrim(st));   
        return   st;   
    } 

    B.

    string LTrim(const string& str) 
    { 
      return str.substr(str.find_first_not_of(" 
    
    	")); 
    } 
    
    string RTrim(const string& str) 
    { 
      return str.substr(0,str.find_last_not_of(" 
    
    	")+1); 
    } 
    
    string Trim(const string& str) 
    { 
      return LTrim(RTrim(str)); 
    }

     欢迎转载,方便的话,请注明出处,谢谢!

  • 相关阅读:
    nodejs实战的github地址,喜欢的你还等啥
    java初始化深度剖析
    第三篇之消息的收发
    第二篇之收发消息的封装
    微信公众号开发第一篇之基本开发环境的搭建
    微信开发调试工具
    微信公众号开发入门教程第一篇
    linux常见驱动修改
    微信硬件开发步骤
    Linux系统快速启动方案
  • 原文地址:https://www.cnblogs.com/alylee/p/TrimString.html
Copyright © 2011-2022 走看看