| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1743 人关注过本帖
标题:求:如何判断中、英文标点符号?
取消只看楼主 加入收藏
cssnet
Rank: 5Rank: 5
等 级:职业侠客
威 望:5
帖 子:351
专家分:335
注 册:2013-10-4
结帖率:100%
收藏
 问题点数:0 回复次数:6 
求:如何判断中、英文标点符号?
比方说,下边这一行字符串:

[这是中文标点“、”,That is 英文标点“;”,那么这个"This's a book."呢?]

混杂了中、英文的字符,扫描这一行字符串,如何判断第N个字符,是否标点符号?
搜索更多相关主题的帖子: 符号 字符串 字符 判断 英文 
2022-11-09 12:35
cssnet
Rank: 5Rank: 5
等 级:职业侠客
威 望:5
帖 子:351
专家分:335
注 册:2013-10-4
收藏
得分:0 
厉害啦!真想不到Strconv()还有这妙用!


以下是引用csyx在2022-11-9 15:09:05的发言:

cc = [这是中文标点“、”,That is 英文标点“;”,那么这个"This's a book."呢?]
For ii = 1 to Lenc(cc)
    c1 = Substrc(cc, ii, 1)
    c2 = Strconv(c1, 1)
    Do case
    Case Empty(c1)
        *-- 空格, TAB, 回车, 换行, 行进 字符
    Case c1 == c2
        If Strconv(c2, 2) == c1
            *--中文字符'
        Else
            ? ii, '全角符号', c1
        EndIf
    Otherwise
        If Between(c1, 'A','Z') or Between(c1, 'a','z')
            *-- 英文字符
        Else
            ? ii, '半角符号', c1
        EndIf
    EndCase
EndFor

2022-11-09 16:58
cssnet
Rank: 5Rank: 5
等 级:职业侠客
威 望:5
帖 子:351
专家分:335
注 册:2013-10-4
收藏
得分:0 
这个函数可能有问题,随便拿几个全角标点符号测试了一下,“—”和“·”判断失误,其他的暂未仔细测试。

以下是引用csyx在2022-11-9 15:09:05的发言:

function isSymbol(cc)
*cc = [这是中文标点“——”和“·”,“、”,That is 英文标点“;”,那么这个"This's a book."呢?]
For ii = 1 to Lenc(cc)
    c1 = Substrc(cc, ii, 1)
    c2 = Strconv(c1, 1)
    Do case
    Case Empty(c1)
        *-- 空格, TAB, 回车, 换行, 行进 字符
    return .t.
    Case c1 == c2
        If Strconv(c2, 2) == c1
            *--中文字符'
        return .f.
        Else
            ? ii, '全角符号', c1
        return .t.
        EndIf
    Otherwise
        If Between(c1, 'A','Z') or Between(c1, 'a','z')
            *-- 英文字符
        return .f.
        Else
            ? ii, '半角符号', c1
        return .t.
        EndIf
    EndCase
EndFor

2022-12-17 19:08
cssnet
Rank: 5Rank: 5
等 级:职业侠客
威 望:5
帖 子:351
专家分:335
注 册:2013-10-4
收藏
得分:0 
以下是引用吹水佬在2022-12-17 20:26:20的发言:
通常可打印的符号没几个,用个码表查好了。


若想一网打尽的话,狠多,多到数唔晒(数不清)——

— ︱ ︵ ︶ ˉ ﹕ \ ﹏ ‖
……
……

狠难狠难穷举的。
2022-12-17 21:44
cssnet
Rank: 5Rank: 5
等 级:职业侠客
威 望:5
帖 子:351
专家分:335
注 册:2013-10-4
收藏
得分:0 
以下是引用吹水佬在2022-12-17 23:02:16的发言:
如果是标准字库编码,字或符是有区位定义。


确实是搞复杂了,呵呵,用区位比较简单。
另,#3的代码,英文符号也有漏洞,“\”(0h5C)这个符号,居然成功混过了这一句代码:
*设c1 = "\"
c2 = Strconv(c1, 1)
? c2 == c1
2022-12-18 09:23
cssnet
Rank: 5Rank: 5
等 级:职业侠客
威 望:5
帖 子:351
专家分:335
注 册:2013-10-4
收藏
得分:0 
弊就弊在,时光匆匆流转到了2022年,作为一群真的猛士,我们每天需直接面对、需直接处理的字符串,绝大多数是UTF-8、Unicode LE、Unicode BE啊,亲!
光用硬编码对付GB2312-80、GBK,那可不成啊,亲!
还必须做到能够妥善处理Strconv(x, 6)='??'的那一堆千奇百怪的偏僻字符啊,亲!


以下是引用吹水佬在2022-12-18 09:29:58的发言:

标准字库本身就有规范,直接查表就可以。
简单写个GB2312-80标准的


2022-12-18 10:29
cssnet
Rank: 5Rank: 5
等 级:职业侠客
威 望:5
帖 子:351
专家分:335
注 册:2013-10-4
收藏
得分:0 
考虑到,今时今日,在这个星球上,几乎一切网页、一切文档,字符串皆采用UTF-8编码,这已经是事实上的“行业标准”了!——无论VFPer喜欢也罢,诅咒也罢,无奈也罢,接受也罢,敌视也罢——故而,字符串相关处理函数的编程开发,若能够直接针对UTF-8编码进行处理,我相信,那必然会是性价比最高的代码开发了。

你说呢,亲?
2022-12-18 10:53
快速回复:求:如何判断中、英文标点符号?
数据加载中...
 
   



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

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