MFC TRIM函数字符串的修剪问题

原创 2013年12月02日 14:37:59
 
BOOLCMainWindow::DynamicShowLog(CString strLogDebug)
{
 if( 0 == strLogDebug.GetLength())
 {
  return false;
 }
 else
 {
  strLogDebug.Trim(_T("\r\n"));//去除回车换行显示在LISTBOX控件中
  m_listbox.AddString(strLogDebug );
  return true;
 }
}
Trim函数。Trim函数具有删除任意指定字符的功能,而去除字符串首尾空格则是trim函数被使用频率最高的一种。语法Trim ( string ),参数string:string类型,指定要删除首部和尾部空格的字符串返回值String。函数执行成功时返回删除了string字符串首部和尾部空格的字符串,发生错误时返回空字符串("")。如果参数值为null时,会抛出空指针异常。在oracle中,trim使用的形式多为人rtrim()与ltrim()两种,分别为去除字符串右边空格与去除字符串左边空格。

       当然trim的功能不止如此,下面进行细致的介绍,这里我多以去除字符串空格为例。

我们看下trim函数的语法描述:trim( [{  {leading|trailing|both} [trim_character]|trim_character}  from]trim_source

1)、不使用任何参数

SQL> selecttrim('  11   ') aa from dual;
 
AA
--
11

这是最常见的一种使用方法,都使用默认的参数,默认情况下TRIM会同时删除字符串前后出现的空格。

2)、使用both参数,效果等同于方法一不使用任何参数

SQL> selecttrim(both from '  11   ') aa from dual;
 
AA
--
11

“BOTH”参数表示同时去除字符串前后所指定的内容(默认情况下删除空格)。

3)、使用leading与trailing参数

SQL> selecttrim(leading from '  11  ') aa from dual;
 
AA
----
11

SQL> selecttrim(trailing from '  11  ') aa from dual;
 
AA
-----
   11
 从结果中得分隔符'-',可以发现使用leading参数可以去除字符串右端的空格,而trailing参数则可以去除字符串左端的空格。正如oracle提供的rtrim()与ltrim()。

4)、使用trim_character参数

trim_character参数改变了“删除空格”的默认行为。如果想要删除字符串'xxxxWORLDxxxx'前后出现的“x”,“trim_character”参数就派上用场了。

SQL> selecttrim('x' from 'xxxxWORLDxxxx') aaaaa from dual;
 
AAAAA
-----
WORLD

trim_character配合“both”、“trailing”和“leading”三个参数使用效果如下,与之前演示类似。看结果,不赘述。

SQL> selecttrim('x' from 'xxxxWORLDxxxx') aaaaa from dual;
 
AAAAA
-----
WORLD
 
SQL> select trim(both 'x' from 'xxxxWORLDxxxx')aaaaa from dual;
 
AAAAA
-----
WORLD
 
SQL> select trim(trailing 'x' from 'xxxxWORLDxxxx')aaaaa from dual;
 
AAAAA
---------
xxxxWORLD
 
SQL> select trim(leading 'x' from 'xxxxWORLDxxxx')aaaaa from dual;
 
AAAAA
---------
WORLDxxxx

      必须注意的一点是这里的“trim_character”参数只允许包含一个字符,不支持多字符。trim不能满足我们去除多字符要求,但是我们可以使用rtrim和ltrim来处理。
1)使用rtrim 

SQL> selectrtrim('ORxxxxWORLDxxxxOR','OR') aaaaa from dual;
 
AAAAA
---------------
ORxxxxWORLDxxxx
2)使用ltrim

SQL> selectltrim('ORxxxxWORLDxxxxOR','OR') aaaaa from dual;
 
AAAAA
---------------
xxxxWORLDxxxxOR
3)联合使用RTRIM和LTRIM函数达到我们的目的
SQL> selectrtrim(ltrim('ORxxxxWORLDxxxxOR','OR'),'OR') aaaaa from dual;
 
AAAAA
-------------
xxxxWORLDxxxx

使用rtrim和ltrim函数时的注意事项:“OR”不表示整个“OR”字符串进行匹配,而是发现任意的字符“O”或字符“R”均做删除操作。

      对于trim函数的应用就介绍到,下面介绍一下replace函数,个人觉得replace函数在去空格时更好用。replace函数用第三个表达式替换第一个字符串表达式中出现的所有第二个给定字符串表达式。来看下replace函数的语法描述:replace('string_replace1','string_replace2','string_replace3')   

'string_replace1'待搜索的字符串表达式,string_replace1 可以是字符数据或二进制数据。

'string_replace2'待查找的字符串表达式,string_replace2 可以是字符数据或二进制数据。

'string_replace3'替换用的字符串表达式,string_replace3 可以是字符数据或二进制数据。

返回类型,如果 string_replace(1、2 或3)是支持的字符数据类型之一,则返回字符数据;如果 string_replace(1、2 或 3)是支持的 binary数据类型之一,则返回二进制数据。

      这里我们依然以去空格为例。

SQL> selectreplace('   aa kk  ',' ','') abcd from dual;
 
ABCD
----
aakk

      与使用trim函数的结果进行对比,我们可以发现,使用replace函数不仅可以去除字符串两端的空格,也可去除字符串内部的空格。

      当然,如果只是要去除字符串两端的空格,使用trim函数效率会更高。

TrimLeft()

  1:用作成员函数,没有参数。调整前导空白字符的字符串。当使用以TrimLeft没有参数,消除换行符、空间和制表符。获取MFC对话框资源中编辑框控件内数据时,删除数据前面的空格、换行符等。  2:这个函数使用的版本,接受参数删除一个特定的角色或一个特殊的一组字符从一开始的一个字符串。

函数原型

  voidTrimLeft();   void CString::TrimLeft(TCHAR chTarget);   void CString::TrimLeft(LPCTSTR lpszTargets);

参数

  chTarget   The target characters to be trimmed.  lpszTargets   A pointer to a string containing the targetcharacters to be trimmed.

举例

  In this example, the string "\t\t ****Hockey is best!" becomes"Hockey is best!":   CString strBefore;   CString strAfter;  strBefore = _T("\t\t ****Hockey is best!");   strAfter =strBefore;   strAfter.TrimLeft(T_("\t *"));//是删除掉全部\t *  _tprintf(_T("Before: \"%s\"\n"), (LPCTSTR) strBefore);  _tprintf(_T("After : \"%s\"\n"), (LPCTSTR) strAfter);

相关文章推荐

PHP字符串函数之 trim ltrim rtrim chop

PHP字符串函数之 trim ltrim rtrim chop trim – 去除字符串首尾处的空白字符(或者其他字符) ltrim – 删除字符串开头的空白字符(或其他字符) rtrim –...
  • letshi
  • letshi
  • 2016年01月22日 17:15
  • 618

对于js中eval()函数的理解 和 写一个函数trim() 去掉字符串左右空格

对于js中eval()函数的理解 和 写一个函数trim() 去掉字符串左右空格。 trim()是参照了jquery的源码,你可以放心使用。 对于js中eval()函数的理解是本人心得不一定正确。...

jQuery里的trim()函数在浏览器上面支持的问题

在开发项目的时候,关于前台Jquery去除空格的这个问题,今天让我们测试的人员给。。住了,你看又有有错,我去,相当没有面子哇    以前真没有怎么注意过,对于现在系统而言,因为是MVC开发的...

自定义C++ trim函数出现的小问题

在地址 http://blog.csdn.net/butterfly_dreaming/article/details/10142443 中,关于trim函数的方法3:gcc编译器不能通过问题。  ...

MFC中几个有用的字符串操作函数

MFC中有几个字符串操作函数很有用,但有的在MSDN中都查不到,因为MSDN没有公布。下面我们来看看它们的用法和声明及定义等。 // 功能 : 格式化字符串 // 参数 : rString -...

字符串切分和trim的操作

  • 2008年10月29日 18:38
  • 1.98MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:MFC TRIM函数字符串的修剪问题
举报原因:
原因补充:

(最多只允许输入30个字)