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=; 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));
}
C++ 实现Trim的更多相关文章
- [PHP源码阅读]trim、rtrim、ltrim函数
trim系列函数是用于去除字符串中首尾的空格或其他字符.ltrim函数只去除掉字符串首部的字符,rtrim函数只去除字符串尾部的字符. 我在github有对PHP源码更详细的注解.感兴趣的可以围观一下 ...
- php的empty(),trim(),strlen()方法
如果empty()函数的参数是非空或非零的值,则empty()返回FALSE.换句话说,"".0."0".NULL.array().var$var:以及没有任何 ...
- ORACLE中的LTRIM、RTRIM和TRIM
LTRIM.RTRIM和TRIM在ORACLE中的用法:1.LTRIM(C1,C2)其中C1和C2都可以字符串,例如C1是'Miss Liu',C2'MisL'等等.这是第一个和SQL SERVER不 ...
- mybatis : trim标签, “等于==”经验, CDATA标签 ,模糊查询CONCAT,LIKE
一.My Batis trim标签有点类似于replace效果. trim 属性, prefix:前缀覆盖并增加其内容 suffix:后缀覆盖并增加其内容 prefixOverrides:前缀判断的条 ...
- IE8下String的Trim()方法失效的解决方案
简洁方便 用jquery的trim()方法,$.trim(str)就可以了.
- Delphi的Trim函数
三个Trim函数简介 函数原型 function Trim(const S: string): string; 将字符串前后的空白及控制字元清掉. 注意Trim函数只能清掉字符串前后的空格及控制字元, ...
- jQuery静态方法noop,camelCase,nodeName,trim使用和源码分析
noop方法 jQuery.noop()函数是一个空函数,它什么也不做. 当某些时候你需要传入函数参数,而且希望它什么也不做的时候,你可以使用该函数,也无需再新建一个空的函数. 示例: // 传入一个 ...
- jquery $.trim()去除字符串空格详解
jquery $.trim()去除字符串空格详解 语法 jQuery.trim()函数用于去除字符串两端的空白字符. 作用 该函数可以去除字符串开始和末尾两端的空白字符(直到遇到第一个非空白字符串为止 ...
- C#中Trim()、TrimStart()、TrimEnd()的用法
string s = " from dual union all "; s = s.Trim().TrimEnd("union all".To ...
- SSD Trim Support -- 保护 SSD
今天同事告诉我,换了 ssd 之后需要做以下配置能使 ssd 寿命更长.原理是配置系统定期清理和回收 ssd 的资源. 最终效果: 步骤: 1.下载 trim enabler: https://gis ...
随机推荐
- html5lib-python doc
http://html5lib.readthedocs.org/en/latest/ By default, the document will be an xml.etree element ins ...
- 为github帐号添加SSH keys
为github帐号添加SSH keys 2012-05-26 00:05 34279人阅读 评论(6) 收藏 举报 ssh文本编辑gitvim工具up 使用git clone命令从github上同步g ...
- C#枚举器接口IEnumerator的实现
原文(http://blog.csdn.net/phpxin123/article/details/7897226) 在C#中,如果一个类要使用foreach结构来实现迭代,就必须实现IEnumera ...
- (a*b)%c 问题
给你两个数__int64 类型的整数 a ,b,c.问你,(a*b)%c的值是多少??我们知道: (a*b)%c = ((a%c)*(b%c))%c .不过即使这样做,在c很大的情况下,(a%c)*( ...
- Niagara AX之axvelocity的使用
axvelocity是一个Web模板引擎模块,来源于Apache Velocity.由于我的Niagara AX的许可没有axvelocity,因此,在palette中没有找到axvelocity. ...
- Jquery网页选项卡应用
<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <m ...
- 使用JavaScript判断图片是否加载完成的三种实现方式
有时需要获取图片的尺寸,这需要在图片加载完成以后才可以.有三种方式实现,下面一一介绍. 一.load事件 <!DOCTYPE HTML> <html> <head> ...
- Dom兼容问题记录汇总
DOM方法兼容表 Chrome FireFox IE6 IE7 IE8 IE9 IE10 innerText 支持 不支持(改成了textContent) 支持 支持 支持 支持 支持 inner ...
- python运维开发(二十五)---cmdb开发
内容目录: 浅谈ITIL CMDB介绍 Django自定义用户认证 Restful 规范 资产管理功能开发 浅谈ITIL TIL即IT基础架构库(Information Technology Infr ...
- STM32之------独立看门狗(IWDG)和窗体看门狗(WWDG)
一 前沿废语: 之前有很风靡的游戏,名字叫<看门狗>.该游戏用了很新的引擎技术,打造出了一个辽阔庞大的世界,内容是玩家Aiden·Pearce(主角)是一名精通黑客技术的高手,当时 ...