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)); 
    }

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

  • 相关阅读:
    URAL 1998 The old Padawan 二分
    URAL 1997 Those are not the droids you're looking for 二分图最大匹配
    URAL 1995 Illegal spices 贪心构造
    URAL 1993 This cheeseburger you don't need 模拟题
    URAL 1992 CVS
    URAL 1991 The battle near the swamp 水题
    Codeforces Beta Round #92 (Div. 1 Only) A. Prime Permutation 暴力
    Codeforces Beta Round #7 D. Palindrome Degree hash
    Codeforces Beta Round #7 C. Line Exgcd
    Codeforces Beta Round #7 B. Memory Manager 模拟题
  • 原文地址:https://www.cnblogs.com/alylee/p/TrimString.html
Copyright © 2011-2022 走看看