如何去掉字符转末尾的空格(已解决)
本帖最后由 xg911335 于 2010-5-14 13:18 编辑比如下面字符串末尾(也就是/后面)有很多空格符,怎么去掉后面多余的空格符呢?
$dfahsadkj#&^#@fhakjdf/ StringStripWS ( "字符串", 2) StringStripWS 无法删除。不知道是空格符还是什么符号。怎么看它是什么符? ( )括号中的是空格符还是什么? 那就用字符串处理吧,
Dim str = "$dfahsadkj#&^#@fhakjdf/ "
StringLeft(str ,StringInStr(str,'/'))返回字符串 只能上传测试文本,贴出来就变了。
猜测:
StringRegExpReplace('字符串', '(\s|\t)+$', '') 最后一个字符是呈变化的。不是固定的。但长度却是固定的。可以用StringLeft 重左边开始返回。但怕万一字符长度出现变化又要改代码。请问一下还有更好的方法吗? 不知道内容只能猜……
最后一个字符是呈变化的?
但长度却是固定的...但怕万一字符长度出现变化??
矛盾得很 针对你的问题只能华丽的告诉你,2楼正解。 8楼我打个比方
$dfahsadkj#&^#@fhakjdf/ 后面是空格
$fgghgfhkj$###^%32453 后面是空格
#dfgergerkj#&^#@fhakjd. 后面是空格
上面字符长度是一样的,但字符串最后个字符是变化的。如("/" "3" ".") 如果用StringLeft重左边开始读取字符,StringLeft("字符串",24) 的数量是24。万一字符串变长了那么读取不完整,短了又出错。
最好是删除字符串后面的空格读取该行。那就不存在这些问题了。StringStripWS怎么也 删除不掉。郁闷。 Local $str,$ws
$str="$dfahsadkj#&^#@fhakjdf/ "
$str="$fgghgfhkj$###^%32453 "
$str="#dfgergerkj#&^#@fhakjd. "
For $i=0 To UBound($str)-1
$ws&=StringStripWS($str[$i],2)&@CRLF
Next
MsgBox(0,0,$ws) StringStripWS()
或
StringRegExpReplace()
等
这些函数都不是直接操作原字符串,而是返回修改后的结果,你不会以为是修改了原字符串吧?
另,如果你不确定最后的是不是空格,那就上传一个文本范本,不会不知道如何上传吧。 本帖最后由 shqf 于 2010-5-6 19:52 编辑
标准空格符的ASCII码 是32,即 Chr(32) 。StringStripWS()函数可以删去字符串中的所有"空白符". 据帮助文档,所谓空白符是指空字符串 Chr(0) 和标准空格符 Chr(32), 还包括从 Chr(9) 到 Chr(13)间的 5 个特殊字符,具体为水平制表符, 换行符, 垂直制表符, 进纸符以及回车符。所以,如果真象楼主所说的是“空格符”的话,StringStripWS()函数是完全可能达到目的的,2 楼肯定是正解(除非StringStripWS()函数存在 BUG)。ASCII 码从0-32为控制字符(一般在文档中不可见,就象空格一样),从33-127位为可打印字符(可见)。从128-255是扩展的ASCII编码。
估计楼主所说的字符串中所含的是其他“空白符”,既然前面的字符个数不定,能否从左开始一个一个字符地读取,并判断其ASCII码值,一旦其ASCII码值不在可打印字符范围内,就结束截取,返回所要字符串。这仅是个思路,如何实现还未试过,不知技术上可行否? 本帖最后由 shqf 于 2010-5-6 20:17 编辑
看了一下帮助文档,试编如下,楼主试试,行否?#include <Array.au3>
Local $Var = "$dfahsadkj#&^#@fhakjdf/"
Local $VarArray = StringToASCIIArray($Var)
For $i = 0 To UBound($VarArray) - 1
If $VarArray[$i] < 33 Or $VarArray[$i] > 127 Then ExitLoop
Next
MsgBox(0, "", StringLeft($Var, $i)) 本帖最后由 netegg 于 2010-5-6 22:49 编辑
Dim $a= "a "
MsgBox('','', StringLen($a) & @CRLF & StringLen(StringReplace($a, ' ', '')) )
如果字符串前面的部分里也含有空格的话不适用
页:
[1]
2