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

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=; i<len; i++)
{
if( str[i] != ' ') break ;
}
memmove(str,str+i,len-i+);
return ;
}

2.去除末尾的空格

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

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

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

也可以这样

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

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

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

" "     (ASCⅡ 32(0x20))    一个空格
"\t"    (ASCⅡ 9(0x09))   tab键
"\n"    (ASCⅡ 10 (0x0A))   换行符
"\r"    (ASCⅡ 13 (0x0D))   a carriage return.
"\0"    (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[];
memset(szOut,,sizeof(szOut));
if (strlen(pstr)>sizeof(szOut))
return; int index=;
for(int i=;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(" \n\r\t"));
} string RTrim(const string& str)
{
  return str.substr(,str.find_last_not_of(" \n\r\t")+);
} string Trim(const string& str)
{
  return LTrim(RTrim(str));
}

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

最新文章

  1. catalina.properties
  2. Mysql之多源复制
  3. Linux下ejabberd安装配置
  4. C#ASP.NET 通用扩展函数之 LogicSugar 简单好用
  5. HDU 4857 逃生 (优先队列+反向拓扑)
  6. OpenGL EXT: shader_buffer_load
  7. mysql 远程连接
  8. [转载]Extjs中的dom,Ext.Element和Ext.Component对象的关系
  9. 一些实用的 jQuery 技巧
  10. python中类的总结
  11. scala 连接 mysql
  12. MAC 上搭建lua环境
  13. 关闭 VS的实时调试器
  14. TortoiseSVN客户端重新设置用户名和密码[转]
  15. System Operations on AWS - Lab 2 - Configuring VPC
  16. 开源中国iOS客户端学习
  17. 【CSS】less 学习小结
  18. oracle 关于对时间操作的汇总
  19. Oracle 动态SQL 注意细节 ORA-00911: 无效字符
  20. [机器学习]集成学习--bagging、boosting、stacking

热门文章

  1. OSX: 私人定制Dock默认程序图标
  2. IOS基于新浪微博开放平台微博APP
  3. 使用WeCloud消息推送接口发送消息NodeJs版
  4. ci 笔记
  5. SQLLoader3(数据文件没有分隔符时的导入)
  6. Asp.net 网站出现Service Unavailable 问题剖析
  7. 未能加载文件或程序集“System.Web.Helpers, Version=2.0.0.0(转)
  8. samba搭建
  9. A Typical Homework(学生信息管理系统)
  10. H面试程序(1)编写一个函数,要求输入年月日时分秒,输出该年月日时分秒的 下一秒