VBGood网站全文搜索 Google

搜索VBGood全站网页(全文搜索)

VB爱好者乐园(VBGood)

 找回密码
 立即注册
搜索
查看: 12568|回复: 22

去掉字符串尾巴chr(0)等等的最好的方法,今天又看到了,分享一下

  [复制链接]
 楼主| 发表于 2011-4-21 21:58:28 | 显示全部楼层 |阅读模式
pathname   =   Split(pathname,   Chr$(0))(0)

这样就成了,以前我是傻傻的写个变量,Instr(String, Chr$(0))找位置, 然后再Left...多此一举。碰到有一堆Chr$(0)分隔的长字符串,还得想半天咋一个个的分别提取。

直接把它打断是最好的...

点评

刚试过果然有效,谢谢!  发表于 2012-10-10 21:17
instr和split 可以用 chr$(0)吗?好像找不到吧。  发表于 2012-10-10 21:14
优化下。 pathname=Split(pathname,chr$(0) , 2)(0)  发表于 2011-4-22 19:10
至于运行速度是不是最快,就不知道了……另外如果pathname=""的时候会出问题,因为这时Split返回结果是空的数组……  发表于 2011-4-21 23:29

评分

参与人数 1威望 +4 人气 +1 收起 理由
19900603 + 4 + 1 精品文章

查看全部评分

头像被屏蔽
发表于 2011-4-22 09:25:27 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

发表于 2011-4-22 11:15:05 | 显示全部楼层
Split 当然没有 instr效率高啦
无需验证,上面的整句是正确的,嘿嘿
Split 将以chr(0)作为分隔符进行整个字符串分隔,然后返回下标(0)维数的

另外我记得,如果pathname=""的时貌似也不会出问题吧!大家最好自己试试,我记得是这样的,不过我的记忆不是很好使倒是真的。

回复 支持 反对

使用道具 举报

发表于 2011-4-22 16:46:12 | 显示全部楼层
replace函数就可以解决

点评

不见得,如果pathname = "aaa"+vbNullChar+"bbb"怎么办?  发表于 2011-4-22 17:40
回复 支持 反对

使用道具 举报

发表于 2011-4-22 18:06:32 | 显示全部楼层
If Length <> 0 Then
        GetWinPath = Left(Windir, InStr(Windir, Chr(0)) - 1)
Else
        GetWinPath = vbNullString
End If
这才是最好的方法

点评

开玩笑,Left(Windir,-1)不会出错么?  发表于 2011-4-22 18:37
请看这里:If Length <> 0 Then  发表于 2011-4-22 18:32
GetCookies = Left(sTmp, InStr(sTmp, Chr(0)) - 1) 没有chr(0) 也不会出现错误的啊,这是我亲自实验过的,且我的所有程序中都是用的这个方法  发表于 2011-4-22 18:31
如果没有chr(0)呢,只能返回错误 ...因此split始终是最方便的,无须预先多次判断  发表于 2011-4-22 18:11
回复 支持 反对

使用道具 举报

 楼主| 发表于 2011-4-22 18:07:31 | 显示全部楼层
本帖最后由 6500K 于 2011-4-22 18:14 编辑
neilbr 发表于 2011-4-22 16:46
replace函数就可以解决


Replace绝对不要乱用,还有直接去掉最后一个字符也是错误的。
比如REG_MULTI_SZ每一段落都用二个Chr(0)分割,这种特殊字符串很多。

Split使用前无需多次预判,也不会有错误的发生。
回复 支持 反对

使用道具 举报

头像被屏蔽
发表于 2011-4-22 18:54:26 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

发表于 2011-4-22 21:46:55 | 显示全部楼层
打酱油
回复 支持 反对

使用道具 举报

发表于 2011-4-22 23:34:40 | 显示全部楼层
本帖最后由 WAWSF 于 2011-4-22 23:38 编辑

你用函数多我也只要多写一句代码而已
TEXT1.TEXT=P
P=TEXT1.TEXT


不想添加控件就这样

Dim P As New TextBox
P.Text = CCC
CCC = CCC

点评

Dim P As New TextBox 就这个都通不过。  发表于 2011-7-8 19:45
测试一下运行速度怎样?  发表于 2011-4-23 13:08
回复 支持 反对

使用道具 举报

发表于 2011-4-23 01:31:39 | 显示全部楼层
经过测试,当字符串为""时,split要报错
Left(Windir,-1) 也要报错
s = IIf(s = "", "", Split(s, Chr(0))(0)) 也要报错
必须写成
If s = "" Then
    s = ""
Else
    s = Split(s, Chr(0))(0)
End If
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

文字版|手机版|小黑屋|VBGood  

GMT+8, 2022-7-3 17:05

VB爱好者乐园(VBGood)
快速回复 返回顶部 返回列表