| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2887 人关注过本帖, 1 人收藏
标题:从字符串中查找ABCD各等级个数,并记录,若无相应的等级则不显示,如下图:
只看楼主 加入收藏
hguyy
Rank: 2
等 级:论坛游民
帖 子:56
专家分:20
注 册:2016-1-25
结帖率:83.33%
收藏(1)
已结贴  问题点数:10 回复次数:12 
从字符串中查找ABCD各等级个数,并记录,若无相应的等级则不显示,如下图:
图片附件: 游客没有浏览图片的权限,请 登录注册
搜索更多相关主题的帖子: 字符串 等级 个数 记录 不显示 
2019-07-22 20:43
hguyy
Rank: 2
等 级:论坛游民
帖 子:56
专家分:20
注 册:2016-1-25
收藏
得分:0 
图片附件: 游客没有浏览图片的权限,请 登录注册
用occurs显示这样的结果。
2019-07-22 20:45
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9841
专家分:27213
注 册:2012-2-5
收藏
得分:0 
楼主能说下这样做的目的是什么

坚守VFP最后的阵地
2019-07-22 20:47
hguyy
Rank: 2
等 级:论坛游民
帖 子:56
专家分:20
注 册:2016-1-25
收藏
得分:0 
回复 3楼 sdta
比较容易看,因为挤一块有时会看错
2019-07-22 21:04
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9841
专家分:27213
注 册:2012-2-5
收藏
得分:10 
既然楼主有难言之隐,我就不多问了
解决方法
cStr = "CDDAABAAA"
?iif(occurs("A", cStr) > 0, str(occurs("A", cStr), 1) + "A", "") + ;
  iif(occurs("B", cStr) > 0, str(occurs("B", cStr), 1) + "B", "") + ;
  iif(occurs("C", cStr) > 0, str(occurs("C", cStr), 1) + "C", "") + ;
  iif(occurs("D", cStr) > 0, str(occurs("D", cStr), 1) + "D", "")

坚守VFP最后的阵地
2019-07-22 21:07
hguyy
Rank: 2
等 级:论坛游民
帖 子:56
专家分:20
注 册:2016-1-25
收藏
得分:0 
回复 5楼 sdta
谢谢
2019-07-22 21:58
yewxj
Rank: 3Rank: 3
等 级:论坛游侠
威 望:5
帖 子:157
专家分:153
注 册:2015-6-18
收藏
得分:0 
SET SAFETY OFF
CREATE dbf 测试表 (djf c(20),djf1 C(40))
INSERT INTO 测试表 (djf) VALUES ('fdsDaDaFfE')
INSERT INTO 测试表 (djf) VALUES ('FRgEeHNgghre')
INSERT INTO 测试表 (djf) VALUES ('nfddfhmFDhZgfd')
INSERT INTO 测试表 (djf) VALUES ('fdhyvf3t5FD3gd')
SCAN
    a1 = ""
    a2 = ""
    a3 = ALLTRIM(djf)
    FOR ii = 1 TO LEN(a3)
        a4 = SUBSTR(a3,ii,1)
        IF ((ASC(a4)>=65 AND ASC(a4) <= 90) OR (ASC(a4) >= 97 AND ASC(a4) <= 122)) AND !a4$a2   &&未计算过的字母
            a1 = a1 + SUBSTR(a2,ii,1)
            a2 = a2 + ALLTRIM(STR(OCCURS(a4,a3))) + a4
        ENDIF
    ENDFOR
    REPLACE djf1 WITH a2
ENDSCAN

BROWSE
2019-07-22 22:14
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10607
专家分:43182
注 册:2014-5-20
收藏
得分:0 
图片附件: 游客没有浏览图片的权限,请 登录注册

CREATE CURSOR tt (djf C(10), djf1 C(20))
INSERT INTO tt (djf) VALUES ("AABCBDE")
INSERT INTO tt (djf) VALUES ("EDDEBCA")
INSERT INTO tt (djf) VALUES ("DBBDAED")
REPLACE djf1 WITH fu(ALLTRIM(djf)) ALL
BROWSE
RETURN

FUNCTION fu(s)
    LOCAL i, n, ret, arr[128]
    STORE 0 TO arr
    FOR i=1 TO LEN(s)
        n = ASC(SUBSTR(s,i,1))
        arr[n] = arr[n] + 1
    ENDFOR
    ret = ""
    FOR i=1 TO 128
        IF arr[i] > 0
            ret = ret + TRANSFORM(arr[i]) + CHR(i)
        ENDIF
    ENDFOR
    RETURN ret
ENDFUNC

[此贴子已经被作者于2019-7-23 05:18编辑过]

2019-07-23 05:04
schtg
Rank: 12Rank: 12Rank: 12
来 自:Usa
等 级:贵宾
威 望:67
帖 子:1711
专家分:3318
注 册:2012-2-29
收藏
得分:0 
楼上版主,高!谢谢!
2019-07-23 07:41
hguyy
Rank: 2
等 级:论坛游民
帖 子:56
专家分:20
注 册:2016-1-25
收藏
得分:0 
各位亲,都太厉害了
2019-07-23 10:09
快速回复:从字符串中查找ABCD各等级个数,并记录,若无相应的等级则不显示,如下 ...
数据加载中...
 
   



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

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