注册 登录
编程论坛 VFP论坛

字符串操作,遍历组合,可否使用For语句?最近VFP块忘光了

ytahdou 发布于 2021-06-23 20:51, 1806 次点击
AA='040506'
最后实现第一个字符串组合,输出:04#05#06#04+05#04+06#05+06#04+05+06
输出第二个:04*05#04*06#05*06#04*05*06
记得使用For  ENdfor是不是可以容易实现?
7 回复
#2
吹水佬2021-06-23 21:24
是分别选1、2、3的组合
#3
ytahdou2021-06-23 21:28
ksxkkmzhdm='040506'
kmyq_OR=''
kmyq_AND=''
For IIkms=1 To 3
    kmyq_OR=kmyq_OR+Substr(ksxkkmzhdm,(IIKMS-1)*2+1,2)+'+'
    kmyq_AND=kmyq_AND+Substr(ksxkkmzhdm,(IIKMS-1)*2+1,2)+'*'
        For IIkmss=IIkms+1 To 3
        kmyq_OR=kmyq_OR+Substr(ksxkkmzhdm,(IIKMSS-1)*2+1,2)+'#'
        kmyq_and=kmyq_and+Substr(ksxkkmzhdm,(IIKMSS-1)*2+1,2)+'#'
    Endfor
Endfor
Messagebox(kmyq_OR,kmyq_and)

问题在哪?
#4
吹水佬2021-06-23 22:04
硬来的
s='040506'
a = SUBSTR(s,1,2)
b = SUBSTR(s,3,2)
c = SUBSTR(s,5,2)
? a+"#"+b+"#"+c+"#"+a+"+"+b+"#"+a+"+"+c+"#"+b+"+"+c+"#"+a+"+"+b+"+"+c

[此贴子已经被作者于2021-6-23 22:10编辑过]

#5
sdta2021-06-23 22:08
程序代码:
CLEAR
AA = '040506'
LOCAL la[3]
FOR lnj = 1 TO 3
    la[lnj] = SUBSTR(aa, lnj*2 - 1, 2)
ENDFOR
STORE "" TO c1, c2, c3, c4, c5
FOR lnj = 1 TO 3
    IF BETWEEN(lnj, 1, 3)
        c1 = c1 + "#" + la[lnj]
        c5 = c5 + "+" + la[lnj]
    ENDIF
    IF INLIST(lnj, 1, 2)
        c2 = c2 + "+" + la[lnj]
    ENDIF
    IF INLIST(lnj, 1, 3)
        c3 = c3 + "+" + la[lnj]
    ENDIF
    IF INLIST(lnj, 2, 3)
        c4 = c4 + "+" + la[lnj]
    ENDIF   
ENDFOR

? "第一个字符串组合=" + SUBSTR(c1, 2) + "#" + SUBSTR(c2, 2) + "#" + SUBSTR(c3, 2) + "#" + SUBSTR(c4, 2) + "#" + SUBSTR(c5, 2)

STORE "" TO c1, c2, c3, c4
FOR lnj = 1 TO 3
    IF BETWEEN(lnj, 1, 3)
        c4 = c4 + "*" + la[lnj]
    ENDIF
    IF INLIST(lnj, 1, 2)
        c1 = c1 + "*" + la[lnj]
    ENDIF
    IF INLIST(lnj, 1, 3)
        c2 = c2 + "*" + la[lnj]
    ENDIF
    IF INLIST(lnj, 2, 3)
        c3 = c3 + "*" + la[lnj]
    ENDIF   
ENDFOR
? "第二个字符串组合=" + SUBSTR(c1, 2) + "#" + SUBSTR(c2, 2) + "#" + SUBSTR(c3, 2) + "#" + SUBSTR(c4, 2)
#6
ytahdou2021-06-23 22:37
感谢,但都不是很合适。
#7
sdta2021-06-23 22:55
以下是引用ytahdou在2021-6-23 22:37:09的发言:

感谢,但都不是很合适。

如何不合适?
与你的结果不符?
#8
mywisdom882021-06-24 08:33
他好像要排列组合
1