标题:请问大侠,VFP如何去掉一行字符中的括号及括号中内容?
只看楼主
甲辰
Rank: 1
等 级:新手上路
帖 子:16
专家分:0
注 册:2021-4-20
结帖率:66.67%
已结贴  问题点数:10 回复次数:30 
请问大侠,VFP如何去掉一行字符中的括号及括号中内容?
请问大侠,VFP如何去掉一行字符中的括号及括号中内容?
如:[01次]面包[02次]生菜 替换为 面包生菜
    [01次]80,[02次]92,  替换为 80,92,


[此贴子已经被作者于2021-11-10 17:58编辑过]

搜索更多相关主题的帖子: 内容 括号 字符 一行 VFP 
2021-11-10 17:57
foxfans
Rank: 4
等 级:贵宾
威 望:11
帖 子:90
专家分:278
注 册:2021-10-23
得分:3 
c="[01次]80,[02次]92,"
n=OCCURS(",",c)
z=''
FOR i=1 TO n
z=z+STREXTRACT(c,']',[,],i)+","
ENDFOR
?z
2021-11-10 18:12
甲辰
Rank: 1
等 级:新手上路
帖 子:16
专家分:0
注 册:2021-4-20
得分:0 
谢谢大侠!但处理结果还不行,请看帖子
以下是引用foxfans在2021-11-10 18:12:27的发言:

c="[01次]80,[02次]92,"
n=OCCURS(",",c)
z=''
FOR i=1 TO n
z=z+STREXTRACT(c,']',[,],i)+","
ENDFOR
?z

========================
c=thisform.edit3.Value
n=OCCURS(",",c)
z=""
FOR i=1 TO n
z=z+STREXTRACT(c,']',[,],i)+","
ENDFOR

thisform.edit2.Value=z
===============================
一是:数据只提取]后面的一位数
二是:二行以上的数据,处理后变成一行。


[此贴子已经被作者于2021-11-10 20:21编辑过]

2021-11-10 18:50
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:3 
扫描一次字符串好了,“[”开始舍弃,“]”结束舍弃
2021-11-10 19:49
甲辰
Rank: 1
等 级:新手上路
帖 子:16
专家分:0
注 册:2021-4-20
得分:0 
大侠好,扫描的代码如何写?
以下是引用吹水佬在2021-11-10 19:49:30的发言:

扫描一次字符串好了,“[”开始舍弃,“]”结束舍弃

扫描的代码如何写?
2021-11-10 19:58
laowan001
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:54
帖 子:802
专家分:1914
注 册:2015-12-30
得分:3 
LOCAL xchr,xsubchr
*xchr = "[44次]13,35,[43次]07,46,[42次]14,33"
xchr = "[01次]面包[02次]生菜"

DO WHILE .T.
    xsubchr = STREXTRACT(xchr,'[',']')
    IF LEN(xsubchr)=0
        EXIT
    ENDIF
    xchr = STRTRAN(xchr,'['+xsubchr+']','')
ENDDO

MESSAGEBOX( xchr)
2021-11-10 20:31
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:0 
以下是引用甲辰在2021-11-10 19:58:20的发言:


扫描的代码如何写?

程序代码:
? fun("[01次]面包[02次]生菜") && 面包生菜
? fun("[01次]80,[02次]92")  && 80,92

FUNCTION fun(s)
    ret = ""
    bg = .T.
    FOR i=1 TO LEN(s)
        ch = SUBSTR(s,i,1)
        IF ch == "["
            bg = .F.
            LOOP
        ELSE
            IF ch == "]"
                bg = .T.
                LOOP
            ENDIF
        ENDIF
        IF bg
            ret = ret + ch
        ENDIF
    ENDFOR 
    RETURN ret
ENDFUNC
2021-11-10 21:20
foxfans
Rank: 4
等 级:贵宾
威 望:11
帖 子:90
专家分:278
注 册:2021-10-23
得分:0 
? fun("[01次]面包[02次]生菜") && 面包生菜
? fun("[01次]80,[02次]92")  && 80,92
FUNCTION Fun(cc)
    z=''
    n=ALINES(ss,cc,4,"]","[")
    FOR n=1 TO n STEP 2
      z=z+ss(n+1)
    ENDFOR
    RETURN z
ENDFUNC
Vfp这类函数很多,自己灵活使用

[此贴子已经被作者于2021-11-10 21:27编辑过]

2021-11-10 21:21
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:0 
程序代码:
s = "[01次]面包,[02次]生菜,[01次]80,[02次]92"
?fun(s) 

FUNCTION fun(s)
    p1 = AT("[",s)
    p2 = AT("]",s)
    DO WHILE p1>0 AND p2>p1
        s = STUFF(s,p1,p2-p1+1,"")
        p1 = AT("[",s)
        p2 = AT("]",s)
    ENDDO
    RETURN s
ENDFUNC
2021-11-10 22:06
甲辰
Rank: 1
等 级:新手上路
帖 子:16
专家分:0
注 册:2021-4-20
得分:0 
谢谢,辛苦了!
以下是引用laowan001在2021-11-10 20:31:57的发言:

LOCAL xchr,xsubchr
*xchr = "[44次]13,35,[43次]07,46,[42次]14,33"
xchr = "[01次]面包[02次]生菜"

DO WHILE .T.
    xsubchr = STREXTRACT(xchr,'[',']')
    IF LEN(xsubchr)=0
        EXIT
    ENDIF
    xchr = STRTRAN(xchr,'['+xsubchr+']','')
ENDDO

MESSAGEBOX( xchr)


谢谢,辛苦了!
2021-11-10 22:08



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




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

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