C++ 实现Trim
添加时间:2013-7-20 点击量:
一、字符串去空格(没有处理惩罚字符串中心的空格)
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]!=0 x0a)&&(str[i]!=0 x0d) ) 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(0 x20)) 一个空格
\t (ASCⅡ 9(0 x09)) tab键
\n (ASCⅡ 10 (0 x0A)) 换行符
\r (ASCⅡ 13 (0 x0D)) a carriage return.
\0 (ASCⅡ 0 (0 x00)) 空字符
\x0B (ASCⅡ 11 (0 x0B)) 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( \n\r\t));
}
string RTrim(const string& str)
{
return str.substr(0,str.find_last_not_of( \n\r\t)+1);
}
string Trim(const string& str)
{
return LTrim(RTrim(str));
}
迎接转载,便利的话,请注明出处,感谢!
我们永远不要期待别人的拯救,只有自己才能升华自己。自己已准备好了多少容量,方能吸引对等的人与我们相遇,否则再美好的人出现、再动人的事情降临身边,我们也没有能量去理解与珍惜,终将擦肩而过。—— 姚谦《品味》
一、字符串去空格(没有处理惩罚字符串中心的空格)
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]!=0 x0a)&&(str[i]!=0 x0d) ) 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(0 x20)) 一个空格
\t (ASCⅡ 9(0 x09)) tab键
\n (ASCⅡ 10 (0 x0A)) 换行符
\r (ASCⅡ 13 (0 x0D)) a carriage return.
\0 (ASCⅡ 0 (0 x00)) 空字符
\x0B (ASCⅡ 11 (0 x0B)) 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( \n\r\t));
}
string RTrim(const string& str)
{
return str.substr(0,str.find_last_not_of( \n\r\t)+1);
}
string Trim(const string& str)
{
return LTrim(RTrim(str));
}
迎接转载,便利的话,请注明出处,感谢!