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 ...
随机推荐
- [Ionic] Build and Run an Ionic App from Scratch
Install: npm install ionic cordova -g Create a project with blank template: ionic start <project_ ...
- Ant命令行操作
Ant命令行操作 Ant构建文件可以将项目编译,打包,測试,它是Apache软件基金会jakarta文件夹中的一个子项目,具有跨平台性,操作简单,并且非常easy上手. 关于Ant执行,能够在项目中找 ...
- vue-resource插件使用
本文的主要内容如下: 介绍vue-resource的特点 介绍vue-resource的基本使用方法 基于this.$http的增删查改示例 基于this.$resource的增删查改示例 基于int ...
- 怎么修改placeholder字体的css样式
修改palceholder内文字的css样式 ::-webkit-input-placeholder{ color: red; font-size: 20px; line-height: 50px; ...
- 循环小数 UVa202
输入整数a和b(0<=a<=3000,1<=b<=3000),输出a/b的循环小数表示以及循环节长度. 例如,a=5,b=43,小数表示为0.(1162790697674418 ...
- jq里attr和prop的区别
jquery中attr和prop的区别 在高版本的jquery引入prop方法后,什么时候该用prop?什么时候用attr?它们两个之间有什么区别?这些问题就出现了. 关于它们两个的区别,网上的答 ...
- 磁盘管理三-raid
前言:何为raid raid是利用多个磁盘组成一个可提升效能.可包含冗余的磁盘阵列组.常用于数据吞吐量大(视频),冗余要求高的场景 当前raid包含了raid0-7,以及组合方式raid10,raid ...
- TeXLive安装过程
Linux系统下TeXLive2016安装教程:http://www.linuxidc.com/Linux/2016-08/133913.htm 安装完成后,在当前用户的 ~/.bashrc 中加入如 ...
- 跪求 EF缓存问题 也不知道是不是缓存 问题
1.数据库里面查的结果 2 vs里面查的结果 为什么 不是16 而是2 下面是代码 /// <summary> /// 权限检查 /// </summary> public ...
- web容器 - Jetty
详解web容器 - Jetty与Tomcat孰强孰弱 Jetty 基本架构 Jetty目前的是一个比较被看好的 Servlet 引擎,它的架构比较简单,也是一个可扩展性和非常灵活的应用服务器. 它 ...