C++ 实现Trim
2024-10-16 00:07:36
一、字符串去空格(没有处理字符串中间的空格)
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));
}
最新文章
- catalina.properties
- Mysql之多源复制
- Linux下ejabberd安装配置
- C#ASP.NET 通用扩展函数之 LogicSugar 简单好用
- HDU 4857 逃生 (优先队列+反向拓扑)
- OpenGL EXT: shader_buffer_load
- mysql 远程连接
- [转载]Extjs中的dom,Ext.Element和Ext.Component对象的关系
- 一些实用的 jQuery 技巧
- python中类的总结
- scala 连接 mysql
- MAC 上搭建lua环境
- 关闭 VS的实时调试器
- TortoiseSVN客户端重新设置用户名和密码[转]
- System Operations on AWS - Lab 2 - Configuring VPC
- 开源中国iOS客户端学习
- 【CSS】less 学习小结
- oracle 关于对时间操作的汇总
- Oracle 动态SQL 注意细节 ORA-00911: 无效字符
- [机器学习]集成学习--bagging、boosting、stacking
热门文章
- OSX: 私人定制Dock默认程序图标
- IOS基于新浪微博开放平台微博APP
- 使用WeCloud消息推送接口发送消息NodeJs版
- ci 笔记
- SQLLoader3(数据文件没有分隔符时的导入)
- Asp.net 网站出现Service Unavailable 问题剖析
- 未能加载文件或程序集“System.Web.Helpers, Version=2.0.0.0(转)
- samba搭建
- A Typical Homework(学生信息管理系统)
- H面试程序(1)编写一个函数,要求输入年月日时分秒,输出该年月日时分秒的 下一秒