| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 5293 人关注过本帖
标题:求从字符串取指定字符前的数字部分,数字长度不一
只看楼主 加入收藏
kesc
Rank: 2
等 级:论坛游民
威 望:1
帖 子:84
专家分:10
注 册:2006-10-11
收藏
得分:0 
回复 5楼 吹水佬
吹版也来解一下
真东西来了
NO.04833357-04833358已认证进项       转换成   04833357-04833358
NO.04833357~04833358已认证进项      转换成   04833357-04833358
NO.04833357:04833358已认证进项       转换成   04833357-04833358
NO.04833357:04833358已认证进项      转换成   04833357-04833358
NO.04833357,-04833358已认证进项      转换成   04833357-04833358
NO.04833357,04833358已认证进项       转换成   04833357,04833358
NO.04833357、04833358已认证进项      转换成   04833357,04833358
NO.04833357.04833358已认证进项       转换成   04833357,04833358
NO.04833357。04833358已认证进项      转换成   04833357,04833358
NO.04833357&04833358已认证进项       转换成   04833357,04833358
#04833357,04833358进项发票          转换成   04833357,04833358
NO.04833357任何汉字或字母或空格04833358已认证进项   转换成   04833357,04833358
NO.04833357-366已认证进项(366-357小于50张时)      转换成   04833357-04833366
NO.04833357,366已认证进项    转换成   04833357,04833366



[此贴子已经被作者于2018-9-20 13:05编辑过]

2018-09-20 12:55
kesc
Rank: 2
等 级:论坛游民
威 望:1
帖 子:84
专家分:10
注 册:2006-10-11
收藏
得分:0 
回复 10楼 pjtyzyq
从不规范的摘要中提取需要的发票号码
2018-09-20 12:58
红星二锅头
Rank: 8Rank: 8
等 级:贵宾
威 望:46
帖 子:491
专家分:754
注 册:2016-8-25
收藏
得分:3 
Clear
lcStr = "NO.04833357,366已认证进项"      && 转换成   04833357,04833366
lcStr = "#04833357,04833358进项发票"     && 转换成   04833357,04833358
lcStr = "NO.04833357&04833358已认证进项"  && 转换成   04833357,04833358
lcStr = "NO.04833357,366已认证进项"
? lcStr
lcChar1 = ""
lcChar2 = ""
llChar  = .T.

For I = 1 To Len(Alltrim(lcStr))
    lcChar = Substr(lcStr, I, 1)
    If Asc(lcChar) > 47 And Asc(lcChar) < 58
        If llChar
            lcChar1 = lcChar1 + lcChar
        Else
            lcChar2 = lcChar2 + lcChar
        Endif
    Else
        llChar  = .F.
    Endif
    llChar = Iif(I < 5, .T., llChar)
Endfor
lcChar2 = Iif(Len(lcChar2) < 8, Stuff(lcChar1, Len(lcChar1) - Len(lcChar2), Len(lcChar2), lcChar2), lcChar2)
? lcChar1 + "-" + lcChar2

团队红星二锅头,队长王猛,领队李冲,顾问杨伟,副队张挺,外联马彪,内勤韩秀,人事顾闯,财务赵魁,后勤周强
2018-09-20 16:26
红星二锅头
Rank: 8Rank: 8
等 级:贵宾
威 望:46
帖 子:491
专家分:754
注 册:2016-8-25
收藏
得分:0 
发票号码为什么不规范化呢?
你以后排序查询怎么处理?

上面的解答就事论事
纯粹练手
不提倡

团队红星二锅头,队长王猛,领队李冲,顾问杨伟,副队张挺,外联马彪,内勤韩秀,人事顾闯,财务赵魁,后勤周强
2018-09-20 16:28
kesc
Rank: 2
等 级:论坛游民
威 望:1
帖 子:84
专家分:10
注 册:2006-10-11
收藏
得分:0 
回复 14楼 红星二锅头
因为你不能保证别人做凭证里的摘要所用的符号一样,有的人用“,”,有的人用“、”,有的人用“/”表示把发票号分开。有的人用“-”,有的人用“~”,有的人用“:”表示连续的发票号。所以要求程序智能化,能读懂不规范的文字!

[此贴子已经被作者于2018-9-20 17:00编辑过]

2018-09-20 16:55
红星二锅头
Rank: 8Rank: 8
等 级:贵宾
威 望:46
帖 子:491
专家分:754
注 册:2016-8-25
收藏
得分:0 
使用电脑是为了规范化,你完全可以用屏蔽码控制用户规范的输入,
退一步说,你提取的前后两个编号,有用减号的,有用逗号的,自己都不规范,怎么要求他人?是不是?
 转换成  04833357-04833358
 转换成  04833357,04833358

强词夺理,到此为止,,,

团队红星二锅头,队长王猛,领队李冲,顾问杨伟,副队张挺,外联马彪,内勤韩秀,人事顾闯,财务赵魁,后勤周强
2018-09-20 17:23
mywisdom88
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:191
帖 子:3147
专家分:8408
注 册:2015-3-25
收藏
得分:3 
上面的,应该可以做,但像最后2行的,就不好搞了。。
NO.04833357-366已认证进项(366-357小于50张时)      转换成   04833357-04833366
NO.04833357,366已认证进项    转换成   04833357,04833366
2018-09-20 17:58
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10609
专家分:43210
注 册:2014-5-20
收藏
得分:0 
不规范,也就是不确定,不确定就难得完整。
目前只好将起始和终止数字串取出再作处理。
2018-09-20 19:49
红星二锅头
Rank: 8Rank: 8
等 级:贵宾
威 望:46
帖 子:491
专家分:754
注 册:2016-8-25
收藏
得分:0 
以下是引用吹水佬在2018-9-20 19:49:49的发言:

上面的,应该可以做,但像最后2行的,就不好搞了。。
NO.04833357-366已认证进项(366-357小于50张时)      转换成   04833357-04833366
NO.04833357,366已认证进项    转换成   04833357,04833366


先预处理:
lcStr = "NO.04833357-366已认证进项(366-357小于50张时)"  && 转换成   04833357-04833366
? lcStr
lcStr = Strtran(lcStr, Strextract(lcStr, "-", ")", 2), "")


[此贴子已经被作者于2018-9-20 20:19编辑过]


团队红星二锅头,队长王猛,领队李冲,顾问杨伟,副队张挺,外联马彪,内勤韩秀,人事顾闯,财务赵魁,后勤周强
2018-09-20 20:18
红星二锅头
Rank: 8Rank: 8
等 级:贵宾
威 望:46
帖 子:491
专家分:754
注 册:2016-8-25
收藏
得分:0 
对不规范的字符串,不能预判,只能来一招拆一招,,,

团队红星二锅头,队长王猛,领队李冲,顾问杨伟,副队张挺,外联马彪,内勤韩秀,人事顾闯,财务赵魁,后勤周强
2018-09-20 20:24
快速回复:求从字符串取指定字符前的数字部分,数字长度不一
数据加载中...
 
   



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

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