
Trim(函式)
trim() 函式移除字元串两侧的空白字元或其他预定义字元。
功能除去字元串开头和末尾的空格或其他字元。函式执行成功时返回删除了string字元串首部和尾部空格的字元串,发生错误时返回空字元串("")。如果任何参数的值为NULL,Trim() 函式返回NULL。
基本介绍
- 外文名:Trim
- 属性:函式
- 参数:string、charlist
- 相关函式:ltrim()、rtrim()
- 属于:空白字元或其他预定义字元。
相关函式
- ltrim() - 移除字元串左侧的空白字元或其他预定义字元。
- rtrim() - 移除字元串右侧的空白字元或其他预定义字元。
语法
string trim (string $str [,string $charlist ])
参数 | 描述 |
---|---|
string | 必需。规定要检查的字元串。 |
charlist | 可选。规定从字元串中删除哪些字元。如果省略该参数,则移除下列所有字元:"\0" - NULL "\t" - 制表符 "\n" - 换行 "\x0B" - 垂直制表符 "\r" - 回车 " " - 空格 |
技术细节
返回值: | 返回已修改的字元串。 |
---|---|
PHP 版本: | 4+ |
更新日誌: | 在 PHP 4.1 中,新增了 charlist 参数。 |
版本升级:
相比PHP4.1.0之下,增加了charlist参数。
实例
<?php
$text = "\t\tThese are a few words :) ... ";
$binary = "\x09Example string\x0A";
$hello = "Hello World";
var_dump($text,$binary,$hello);
print "\n";
$trimmed = trim($text);
var_dump($trimmed);
$trimmed = trim($text," \t.");
var_dump($trimmed);
$trimmed = trim($hello,"Hdle");
var_dump($trimmed);
// trim the ASCII control characters at the beginning and end of $binary
// (from 0 to 31 inclusive)
$clean = trim($binary,"\x00..\x1F");
var_dump($clean);
?>
结果如下:
string(32) " These are a few words :) ... "
string(16)" Example string
"
string(11)"Hello World"
string(28) "These are a few words :) ..."
string(24) "These are a few words :)"
string(5)"o Wor"
string(14)"Example string"
Example #2 Trimming array values with trim()
<?php
function trim_value(&$value)
{
$value = trim($value);
}
$fruit = array('apple','banana ',' cranberry ');
var_dump($fruit);
array_walk($fruit,'trim_value');
var_dump($fruit);
?>
上例结果如下:
array(3){
[0]=>
string(5)"apple"
[1]=>
string(7)"banana "
[2]=>
string(11)" cranberry "
}
array(3){
[0]=>
string(5)"apple"
[1]=>
string(6)"banana"
[2]=>
string(9)"cranberry"
}
另外,rtrim,ltrim用法与trim用法相同。唯一的差别是ltrim去除左边的空格,rtrim去除右边的空格。这个从其首字母不难看出。
SQL TRIM函式
定义和用法
SQL中的TRIM函式是用来移除掉一个字串中的字头或字尾。最常见的用途是移除字首或字尾的空白。这个函式在不同的资料库中有不同的名称:
MySQL: TRIM(),RTRIM(),LTRIM()
Oracle: RTRIM(),LTRIM()
SQL Server: RTRIM(),LTRIM()
各种 trim 函式的语法如下:
LTRIM(字串):将字串左边的空格移除。
RTRIM(字串): 将字串右边的空格移除。
TRIM(字串): 将字串首尾两端的空格移除,作用等于RTRIM和LTRIM两个函式共同的结果。
ALLTRIM(字串):将字串左右边两边的空格移除。
实例
例1:
SELECT TRIM(' Sample ');
结果:
'Sample'
例2:
SELECT LTRIM(' Sample ');
结果:
'Sample '
例3:
SELECT RTRIM(' Sample ');
结果:
' Sample'
JAVA trim()方法
JAVA中的trim()是去掉首尾空格
例:
String str = " test trim";
System.out.println(str);
System.out.println(str.trim());
输出结果为:
test trim 这行的首部空格留着
test trim 这行首尾空格被去掉,但是中间的还保留
ASP trim()函式
ASP中的trim()函式的作用是去掉字元中左右两端的空格
例:
Dim MyVar
MyVar = Trim(" test trim ")
MyVar的值为"test trim"
ASP.NET trim()函式
.net 中Trim()函式的作用是从当前 System.String 对象的开始和末尾移除所有空白字元后保留的字元串。
另外还有
TrimStart(params char[] trimChars) //从当前 System.String 对象移除数组中指定的一组字元的所有前导匹配项。
TrimEnd(params char[] trimChars) //从当前 System.String 对象移除数组中指定的一组字元的所有尾部匹配项。
例如:
stringStr="HelloWord!";stringnewStr1="";stringnewStr2="";stringnewStr3="";newStr1=Str.Trim();//即可去掉该字元串头尾的所有空白字元newStr2=Str.TrimStart('');//参数不能为空,只能是char类型,去掉字元前面的空白字元newStr3=Str.TrimEnd('');//参数不能为空,只能是char类型,去掉字元后面的空白字元Response.Write("newStr1等于\""+newStr1+"\"<br/>");Response.Write("newStr2等于\""+newStr2+"\"<br/>");Response.Write("newStr3等于\""+newStr3+"\"<br/>");
结果:
newStr1等于"Hello Word !"
newStr2等于"Hello Word ! "
newStr3等于" Hello Word !"
newStr2等于"Hello Word ! "
newStr3等于" Hello Word !"
SSDTRIM
原理
原本在机械硬碟上,在删除数据时,系统只会在逻辑地址表的这个位置做个标记,说明这里应该是没有东西了,以后新的数据可以放在这个逻辑位置上。系统并不会传送任何请求给硬碟,因为下次在这个逻辑位置写入新数据时,系统可以直接找到磁碟上对应的物理位置,将硬碟上该处的无用数据覆盖,因此才有数据恢复的可能。所以对于硬碟的物理内容,在删除档案时其实并没有发生任何变化。
对于固态硬碟(SSD),由于快闪记忆体的固有特性,更新页之前必须要擦除相关块。如果不开启TRIM,在档案系统中早已被删除的块在物理上还存放着原来的数据,且SSD主控无法知道这个块已经无用,直到有新的数据要求写入该块。物理上存放已无用的数据会在SSD垃圾回收(GC)的过程中被当成有用数据对待,被这对于固态硬碟的寿命是非常不利的,同时会导致其工作效率和性能的降低。
而当作业系统识别到SSD并确认SSD支持TRIM后,在删除数据时,向SSD发出TRIM指令,通知SSD主控对应的页面已经无效,SSD启动GC(垃圾回收)机制时,就可以及时释放这些页面。未来有数据需要写入的时候,直接就可以写入了。
所以说,TRIM只是避免SSD在垃圾回收时将无用数据当成有用数据来搬运,从而延长了SSD的寿命。以上就是Trim的原理以及真正作用。
并不是作业系统提供Trim指令支持,所有SSD都能享受到Trim技术所带来的好处,这还需要固态硬碟的固件支持才能实现。一些主要的固态硬碟主控晶片厂商已经提供了支持Trim的固件(例如英特尔"X25-M G2"),不过也有厂商开发出不依赖作业系统的垃圾回收技术,通过回收不再使用的快闪记忆体区块加入负载平衡算法,防止固态硬碟在长期使用后速度下滑,并延长快闪记忆体使用寿命,过程完全在固态硬碟内部完成。
验证方法
win7下Trim验证方法
其实Windows 7默认状态下Trim指令是开启的,如果想查询当前的Trim指令状态,我们可以在管理员许可权下,进入命令提示符界面,输入“fsutil behavior QUERY DisableDeleteNotify”,之后会得到相关查询状态的反馈。在这里,提示为“DisableDeleteNotify = 0”即Trim指令已启用;提示为“DisableDeleteNotify = 1”即为Trim指令未启用。