注册 登录
编程论坛 VFP论坛

请教一个字符串是否包含?或?

wxzd123 发布于 2023-05-05 09:31, 237 次点击
C='ab?j' c='ks?n'  c='l?lj??' 可以这样
'?'$c or '?'$c  也可以AT('?',c)>1 or ATc('?',c)>1
有没有一个函数就可以?谢谢
8 回复
#2
sdta2023-05-05 10:12
chrtranc() &&判断长度是否有变化
c='l?lj??'
if lenc(chrtranc(c, "??", space(0))) < lenc(c)
    ? "有?或?"
endif




[此贴子已经被作者于2023-5-5 10:15编辑过]

#3
csyx2023-05-05 11:16
如果仅就处理全/半角问号,用 '?'$c or '?'$c 就是最佳方案了,速度最快

其他情况,可考虑先把全角都转成半角,或者半角转成全角,再判断:
? '?' $ strconv('半角问号?', 1)    && 转成全角字符判断
? '?' $ strconv('全角问号?', 2)    && 转成半角字符判断


[此贴子已经被作者于2023-5-5 11:19编辑过]

#4
foxfans2023-05-05 11:19
if ALINES(_tmp,[l?lj??],2,"?","?")>1
  ?"YES"
endif
#5
laowan0012023-05-05 13:31
以下是引用sdta在2023-5-5 10:12:59的发言:

chrtranc() &&判断长度是否有变化
c='l?lj??'
if lenc(chrtranc(c, "??", space(0))) < lenc(c)
    ? "有?或?"
endif

如果字符串是'l?lj??l j',长度也会不一样

4楼方法可行
#6
吹水佬2023-05-05 14:52
测试:
1、完整的宽字符串
c = "#靠"
? AT("?",c) > 0    && .t.
? ATC("?",c) > 0   && .t.
? "?"$c    && .f.
? lenc(chrtranc(c, "?", space(0))) < lenc(c)  && .f.

2、不完整的宽字符串(从数据流截取的字符串,如存在半个宽字符)
c = SUBSTR("#靠",2)
? AT("?",c) > 0    && .t.
? ATC("?",c) > 0   && .t.
? "?"$c    && .t.
? lenc(chrtranc(c, "?", space(0))) < lenc(c)  && .t.
#7
wxzd1232023-05-08 09:51
谢谢各位老师指点,但ALINES(_tmp,[l?lj??],2,"?","?")没明白后面,2,"?","?"参数作用?
#8
sdta2023-05-08 10:48
只有本站会员才能查看附件,请 登录
#9
wxzd1232023-05-08 14:42
谢谢
1