| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1098 人关注过本帖
标题:关于substr 字符截取的请教,子串内容异常。
只看楼主 加入收藏
lnfx2019
Rank: 2
等 级:论坛游民
帖 子:37
专家分:14
注 册:2019-8-20
结帖率:40%
收藏
已结贴  问题点数:20 回复次数:9 
关于substr 字符截取的请教,子串内容异常。
tmp_check1="“xiaobaobei/小宝贝”XGW7226D 无芯卫生纸 单提装(4层加厚纸巾手纸厕纸128mm*120mm/节840克/提12卷/提)"
?subs(tmp_check1,at("”",tmp_check1),at("装(",tmp_check1)-at("”",tmp_check1))
取得的子串为:  
”Ρ础盭GW7226D 无芯卫生纸 单提     
这个为错误的。

tmp_check1="“xiaobaobei/小”XGW7226D 无芯卫生纸 单提装(4层加厚纸巾手纸厕纸128mm*120mm/节840克/提12卷/提)"
?subs(tmp_check1,at("”",tmp_check1),at("装(",tmp_check1)-at("”",tmp_check1))
取得的子串为:  
”XGW7226D 无芯卫生纸 单提
这个为正确的。

应用中,基本上获得的子串都是正确的,就是这次遇到这个出现异常了,请高手指教!!!
搜索更多相关主题的帖子: 字符 截取 异常 子串 内容 
2022-05-31 10:36
laowan001
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:66
帖 子:1058
专家分:2579
注 册:2015-12-30
收藏
得分:4 
tmp_check1="“xiaobaobei/小宝贝”XGW7226D 无芯卫生纸 单提装(4层加厚纸巾手纸厕纸128mm*120mm/节840克/提12卷/提)"
MESSAGEBOX(STREXTRACT(tmp_check1,'”','装'))
试试这样
2022-05-31 10:56
lnfx2019
Rank: 2
等 级:论坛游民
帖 子:37
专家分:14
注 册:2019-8-20
收藏
得分:0 
以下是引用laowan001在2022-5-31 10:56:07的发言:

tmp_check1="“xiaobaobei/小宝贝”XGW7226D 无芯卫生纸 单提装(4层加厚纸巾手纸厕纸128mm*120mm/节840克/提12卷/提)"
MESSAGEBOX(STREXTRACT(tmp_check1,'”','装'))
试试这样


谢谢你的指导!!
这个是在VFP 9.0 环境下好用,有没有在VFP6.0 环境下的解决方案呢?
2022-05-31 12:00
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9795
专家分:26886
注 册:2012-2-5
收藏
得分:4 
tmp_check1="“xiaobaobei/小宝贝”XGW7226D 无芯卫生纸 单提装(4层加厚纸巾手纸厕纸128mm*120mm/节840克/提12卷/提)"
alines(la, chrtran(tmp_check1, "(", chr(13)))
? substr(la[1],1)
下面应该会处理了吧

坚守VFP最后的阵地
2022-05-31 13:24
lnfx2019
Rank: 2
等 级:论坛游民
帖 子:37
专家分:14
注 册:2019-8-20
收藏
得分:0 

谢谢您的指导!

tmp_check1="“xiaobaobei/小宝贝”XGW7226D 无芯卫生纸 单提装(4层加厚纸巾手纸厕纸128mm*120mm/节840克/提12卷/提)"
alines(la, chrtran(tmp_check1, "(", chr(13)))
? substr(la[1],1)
“xiaobaobei/小宝贝”XGW7226D 无芯卫生纸 单提装

“xiaobaobei/小宝贝”   这个是商品的品牌,  单提  是计量单位  ,应用是想自动从商品名称中 获取 品牌与计量单位(含计量单位)间部分
以这个商品名称为例,应该需要获取到   
XGW7226D 无芯卫生纸 单提
这个字串,但这个商品,不知什么原因受   宝贝  这两个字影响,而获取到了
Ρ础盭GW7226D 无芯卫生纸 单提
如果从开始位置取,取到计量单位,这个串也是正确的:
?subs(tmp_check1,1,at("装(",tmp_check1)-1)
“xiaobaobei/小宝贝”XGW7226D 无芯卫生纸 单提

2022-05-31 14:50
ccb2000
Rank: 2
等 级:论坛游民
威 望:2
帖 子:15
专家分:30
注 册:2022-2-26
收藏
得分:4 
解决半个汉字的问题,可以使用支持双字节汉字的函数,例如:
?SUBSTRC(tmp_check1,at_c("”",tmp_check1),at_c("装(",tmp_check1)-at_c("”",tmp_check1))
2022-05-31 14:55
sych
Rank: 4
等 级:业余侠客
威 望:7
帖 子:235
专家分:286
注 册:2019-10-11
收藏
得分:4 
?ASC(SUBSTR("小宝",2,1))
?ASC(SUBSTR("小宝",3,1))
?ASC(SUBSTR("小宝”",5,1))
?ASC(SUBSTR("小宝”",6,1))
第2、3字符和第5、6字符的ASC码相同,这是双字节造成的
AT_C( ) 是为包含双字节字符的表达式设计的。如果表达式只包含单字节, AT_C() 等同于 AT()。
tmp_check1="“xiaobaobei/小宝贝”XGW7226D 无芯卫生纸 单提装(4层加厚纸巾手纸厕纸128mm*120mm/节840克/提12卷/提)"
?SUBSTRC(tmp_check1,at_c("”",tmp_check1),at_c("装(",tmp_check1)-at_c("”",tmp_check1))
或者这样改写,分隔字符多取几个
tmp_check1="“xiaobaobei/小宝贝”XGW7226D 无芯卫生纸 单提装(4层加厚纸巾手纸厕纸128mm*120mm/节840克/提12卷/提)"
?SUBSTR(tmp_check1,at("”X",tmp_check1),at("装(",tmp_check1)-at("”X",tmp_check1))
2022-05-31 15:10
lnfx2019
Rank: 2
等 级:论坛游民
帖 子:37
专家分:14
注 册:2019-8-20
收藏
得分:0 
刚刚我也发现应该是汉字字节影响的问题,上来一看居然大家已经帮我写出来解决方法了!

汉字的问题,可以使用支持双字节汉字的函数,例如:
?SUBSTRC(tmp_check1,at_c("”",tmp_check1),at_c("装(",tmp_check1)-at_c("”",tmp_check1))
这个方法可以!!

十分感谢laowan001、sdta、ccb2000、sych的指导!!
正是有你们的无私奉献与分享,才会让我们这些VFP爱好者们始终不愿放弃她,才会让她依然散发着光和热。

愿我们的VFP论坛永远年青,各们爱好者们都可以在这里解决掉心中疑问!!
2022-05-31 15:26
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9795
专家分:26886
注 册:2012-2-5
收藏
得分:0 
tmp_check1="“xiaobaobei/小宝贝”XGW7226D 无芯卫生纸 单提装(4层加厚纸巾手纸厕纸128mm*120mm/节840克/提12卷/提)"
?SUBSTRC(tmp_check1,at_c("”",tmp_check1)+2,at_c("(",tmp_check1)-at_c("”",tmp_check1)-2)

坚守VFP最后的阵地
2022-05-31 19:06
mywisdom88
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:191
帖 子:3146
专家分:8408
注 册:2015-3-25
收藏
得分:4 
原来,ATC()=AT_C()的?我以前只知道有ATC()
2022-06-01 12:38
快速回复:关于substr 字符截取的请教,子串内容异常。
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016072 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved