| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1285 人关注过本帖
标题:标点符号函数简化问题
取消只看楼主 加入收藏
qczx3358
Rank: 2
等 级:论坛游民
帖 子:44
专家分:15
注 册:2014-1-19
结帖率:100%
收藏
 问题点数:0 回复次数:7 
标点符号函数简化问题
把一个备注内容通过分段分成几个行,但是有时行首有中文标点符号,我想设计一个函数把行首标点添加到上一行尾
比如有行a1,行b1,行c1,行d1等等,大家有什么好的办法,说说。。
设计一函数如下:
程序代码:
*!* 校验行首是否为中文标点符号(包括","。"》"三种),如果是则把标点符号删掉在它前一行尾增加此标点符号
*!* 用法bdfh(首行变量,下一行变量,1或2),如果是1则返回首行,2则返回第二行
*!*    如bdfh(a1,b1,1)则返回a1值,bdfh(a1,b1,2)则返回b1值
FUNCTION bdfh
PARAMETERS sbdfhtmp,wbdfhtmp,bdfhtmp
    IF ASC(SUBSTRC(wbdfhtmp,1,1))=41900&&,
    sbdfhtmp=sbdfhtmp+CHR(41900)
    wbdfhtmp=SUBSTRC(wbdfhtmp,2)
    ENDIF
    IF ASC(SUBSTRC(wbdfhtmp,1,1))=41399&&》
    sbdfhtmp=sbdfhtmp+CHR(41399)
    wbdfhtmp=SUBSTRC(wbdfhtmp,2)
    ENDIF
    IF ASC(SUBSTRC(wbdfhtmp,1,1))=41379&&。
    sbdfhtmp=sbdfhtmp+CHR(41379)
    wbdfhtmp=SUBSTRC(wbdfhtmp,2)
    ENDIF
    IF ASC(SUBSTRC(wbdfhtmp,1,1))=41378&&、
    sbdfhtmp=sbdfhtmp+CHR(41378)
    wbdfhtmp=SUBSTRC(wbdfhtmp,2)
    ENDIF
    IF ASC(SUBSTRC(wbdfhtmp,1,1))=41919&&?
    sbdfhtmp=sbdfhtmp+CHR(41919)
    wbdfhtmp=SUBSTRC(wbdfhtmp,2)
    ENDIF
    IF ASC(SUBSTRC(wbdfhtmp,1,1))=41889&&!
    sbdfhtmp=sbdfhtmp+CHR(41889)
    wbdfhtmp=SUBSTRC(wbdfhtmp,2)
    ENDIF
    IF ASC(SUBSTRC(wbdfhtmp,1,1))=41915&&;
    sbdfhtmp=sbdfhtmp+CHR(41915)
    wbdfhtmp=SUBSTRC(wbdfhtmp,2)
    ENDIF
    IF ASC(SUBSTRC(wbdfhtmp,1,1))=41914&&:
    sbdfhtmp=sbdfhtmp+CHR(41914)
    wbdfhtmp=SUBSTRC(wbdfhtmp,2)
    ENDIF
    RETURN IIF(bdfhtmp=1,sbdfhtmp,wbdfhtmp)
ENDFUNC


程序代码:
a1=bdfh(a1,b1,1)&&第一行和第二行检测
b1=bdfh(a1,b1,2)&&第一行和第二行检测
b1=bdfh(b1,c1,1)&&第二行和第三行检测
c1=bdfh(b1,c1,2)&&第二行和第三行检测
c1=bdfh(c1,d1,1)&&第三行和第四行检测
d1=bdfh(c1,d1,2)&&第三行和第四行检测
搜索更多相关主题的帖子: color 标点符号 中文 
2014-02-28 20:13
qczx3358
Rank: 2
等 级:论坛游民
帖 子:44
专家分:15
注 册:2014-1-19
收藏
得分:0 
没人理呀,大家讨论一下哈哈。
2014-03-01 10:30
qczx3358
Rank: 2
等 级:论坛游民
帖 子:44
专家分:15
注 册:2014-1-19
收藏
得分:0 
继续顶一下,有人讨论不?
2014-03-02 10:56
qczx3358
Rank: 2
等 级:论坛游民
帖 子:44
专家分:15
注 册:2014-1-19
收藏
得分:0 
真晕,提个问题有什么呀。
2014-03-02 12:23
qczx3358
Rank: 2
等 级:论坛游民
帖 子:44
专家分:15
注 册:2014-1-19
收藏
得分:0 
如果把备注字段打印出来,一整段,直接打印备注字段,有的时候行间距不好控制,那么把备注字段分成不同的行,把每行要打印内容重新存储为字符型字段,然后字符型字段放入报表中,行间距就可以按需要调整了。
但是分行的时候,如果行首是标点符号就不美观了。
这是我要表达的意思。

[ 本帖最后由 qczx3358 于 2014-3-2 14:49 编辑 ]
2014-03-02 14:48
qczx3358
Rank: 2
等 级:论坛游民
帖 子:44
专家分:15
注 册:2014-1-19
收藏
得分:0 
以下是引用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就正常用了。
2014-03-04 20:56
qczx3358
Rank: 2
等 级:论坛游民
帖 子:44
专家分:15
注 册:2014-1-19
收藏
得分:0 
回复 14楼 Tiger5392
非常感谢!
2014-03-04 20:57
qczx3358
Rank: 2
等 级:论坛游民
帖 子:44
专家分:15
注 册:2014-1-19
收藏
得分:0 
以下是引用Tiger5392在2014-3-6 10:01:42的发言:

其实用do while ... enddo语句,是为了防止如下类似的东西存在
第一行:    我看过一本书《潜水员是如何练成的
第二行:?》。该书写的是一个人如何成为优秀的
第三行:潜水员。
其中第二行应该将三个双字节往上一行移动才行。
程序出了点问题,修改如下
FUNCTION bdfh
  PARAMETERS sbdfhtmp,wbdfhtmp,bdfhtmp
  IF TYPE("sbdfhtmp")#"C" OR TYPE("wbdfhtmp")#"C" OR TYPE("bdfhtmp")#"N"
    RETURN ""
  ENDIF
  DO WHILE SUBSTRC(wbdfhtmp,1,1)$",》。、?!;:”"
    sbdfhtmp=sbdfhtmp-SUBSTRC(wbdfhtmp,1,1)
    wbdfhtmp=SUBSTRC(wbdfhtmp,2)
  ENDDO
  RETURN IIF(bdfhtmp=1,sbdfhtmp,wbdfhtmp)
ENDFUNC

非常感谢你噢。。
2014-03-07 11:25
快速回复:标点符号函数简化问题
数据加载中...
 
   



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

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