以下是引用Tiger5392在2014-3-4 09:56:22的发言:
*!* 校验行首是否为中文标点符号(包括","。"》"三种),如果是则把标点符号删掉在它前一行尾增加此标点符号
*!* 用法bdfh(首行变量,下一行变量,1或2),如果是1则返回首行,2则返回第二行
*!* 如bdfh(a1,b1,1)则返回a1值,bdfh(a1,b1,2)则返回b1值
FUNCTION bdfh
PARAMETERS sbdfhtmp,wbdfhtmp,bdfhtmp
IF TYPE("sbdfhtmp")#"C" OR TYPE("wbdfhtmp")#"C" OR TYPE("bdfhtmp")#"N"
RETURN ""
ENDIF
cCode=SUBSTRC(wbdfhtmp,1,1)
DO WHILE cCode$",》。、?!;:”"+",.?!:;"&&考虑到部分单字节标点符号
sbdfhtmp=sbdfhtmp-cCode
wbdfhtmp=SUBSTRC(wbdfhtmp,2)
ENDDO
RETURN IIF(bdfhtmp=1,sbdfhtmp,wbdfhtmp)
ENDFUNC
我用这段代码,计算机就不响应了。
程序代码:
*!* 校验行首是否为中文标点符号(包括","。"》"三种),如果是则把标点符号删掉在它前一行尾增加此标点符号
*!* 用法bdfh(首行变量,下一行变量,1或2),如果是1则返回首行,2则返回第二行
*!* 如bdfh(a1,b1,1)则返回a1值,bdfh(a1,b1,2)则返回b1值
Function bdfh
Parameters sbdfhtmp,wbdfhtmp,bdfhtmp
If Type("sbdfhtmp")#"C" Or Type("wbdfhtmp")#"C" Or Type("bdfhtmp")#"N"
Return ""
Endif
cCode=Substrc(wbdfhtmp,1,1)
IF cCode$",》。、?!;:”"+",.?!:;"&&考虑到部分单字节标点符号
sbdfhtmp=sbdfhtmp-cCode
wbdfhtmp=Substrc(wbdfhtmp,2)
ENDIF
Return Iif(bdfhtmp=1,sbdfhtmp,wbdfhtmp)
Endfunc
把do while改成if就正常用了。