标题:从字符串中查找ABCD各等级个数,并记录,若无相应的等级则不显示,如下图:
只看楼主
hguyy
Rank: 2
等 级:论坛游民
帖 子:56
专家分:20
注 册:2016-1-25
结帖率:83.33%
已结贴  问题点数: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
来 自:江苏省连云港市
等 级:版主
威 望:323
帖 子:9621
专家分:26174
注 册: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
来 自:江苏省连云港市
等 级:版主
威 望:323
帖 子:9621
专家分:26174
注 册: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
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册: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: 11Rank: 11Rank: 11Rank: 11
来 自:https://t.me/pump_upp
等 级:贵宾
威 望:67
帖 子:1355
专家分:2534
注 册:2012-2-29
得分:0 
楼上版主,高!谢谢!
2019-07-23 07:41
hguyy
Rank: 2
等 级:论坛游民
帖 子:56
专家分:20
注 册:2016-1-25
得分:0 
各位亲,都太厉害了
2019-07-23 10:09



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-495990-1-1.html




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

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