| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1512 人关注过本帖
标题:有关字符判断代码
只看楼主 加入收藏
aqyejun
Rank: 4
等 级:贵宾
威 望:10
帖 子:147
专家分:113
注 册:2010-6-11
结帖率:100%
收藏
已结贴  问题点数:10 回复次数:9 
有关字符判断代码
共享一个字符判断代码,有时可能会用到!
*取整数
*Ceil(Month(date())/3)
clear
accept "请输入字符:" to a
do case
case ISLOWER(a)
?"该字符是小写字母。"
case ISUPPER(a)
?"该字符是大写字母。"
case ISDIGIT(a)
?"该字符是数字。"
OTHERWISE
?"该字符是其他特殊符号。"
endcase


clear
accept "请输入字符:" to a
if asc(a)>=48 and asc(a)<=57
?"该字符是数字。"
else
if asc(a)>=97 and asc(a)<=122
?"该字符是小写字母。"
else
if asc(a)>=65 and asc(a)<=90
?"该字符是大写字母。"
else
?"该字符是其他特殊符号。"
endif
endif
endif

CLEAR
LOCAL a as String
Accept "请输入一个字符串" To a
For i = 1 To Len(a)
    b=Substr(a,i,1)
    Do Case
    Case Isdigit(b)=.T.
        ?a+"的第"+ Transform(i)+"位是数字"
    Case Isalpha(b)=.T.
        ?a+"的第"+ Transform(i)+"位是字母"
    Case ISLOWER(b)=.T.
        ?a+"的第"+ Transform(i)+"位是小写字母"
    Case ISUPPER(b)=.T.
        ?a+"的第"+ Transform(i)+"位是大写字母"
    Otherwise
        ?a+"的第"+ Transform(i)+"位是数字字母外的字符"
    Endcase
Endfor
搜索更多相关主题的帖子: asc case 字符 字母 判断 
2021-12-28 08:20
cssnet
Rank: 5Rank: 5
等 级:职业侠客
威 望:5
帖 子:350
专家分:330
注 册:2013-10-4
收藏
得分:3 
印象中,一切中文字符,用ISUPPER()、Isalpha()来判断,总能得到.t.
ISLOWER()则返回.f.
不知这是鬼佬的哪门子逻辑?
——不知有没记错。
2021-12-28 17:11
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9841
专家分:27213
注 册:2012-2-5
收藏
得分:3 
判断一个字符是否为中文字符,ISLEADBYTE( )最合适。

坚守VFP最后的阵地
2021-12-28 20:33
cssnet
Rank: 5Rank: 5
等 级:职业侠客
威 望:5
帖 子:350
专家分:330
注 册:2013-10-4
收藏
得分:0 
以下是引用sdta在2021-12-28 20:33:31的发言:
判断一个字符是否为中文字符,ISLEADBYTE( )最合适。


万一中文字符是Unicode LE、Unicode BE或UTF-8之类,ISLEADBYTE()一样死翘翘!
2021-12-28 21:09
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9841
专家分:27213
注 册:2012-2-5
收藏
得分:0 
Unicode LE、Unicode BE或UTF-8之类,是中文字符吗

坚守VFP最后的阵地
2021-12-28 23:03
cssnet
Rank: 5Rank: 5
等 级:职业侠客
威 望:5
帖 子:350
专家分:330
注 册:2013-10-4
收藏
得分:0 
以下是引用sdta在2021-12-28 23:03:58的发言:
Unicode LE、Unicode BE或UTF-8之类,是中文字符吗


乍一看,很震惊!
先生何出此言?

* *****************************
* Unicode LE、Unicode BE或UTF-8之类,是中文字符吗
* 为什么不是?!
* *****************************
cGB2312 = "中"
cUnicode = STRCONV(cGB2312, 5)
cUTF8 = STRCONV(cGB2312, 9)
* 你双击打开下边这3个TXT看一看,为什么你会觉得它们不是中文字符?!
* 注:unicode只弄了小尾,大尾的话,对调一下高低字节序即可。
strtofile(cGB2312, "GB2312.txt")
strtofile(cUnicode, "Unicode.txt")
strtofile(cUTF8, "UTF8.txt")
2021-12-28 23:31
aqyejun
Rank: 4
等 级:贵宾
威 望:10
帖 子:147
专家分:113
注 册:2010-6-11
收藏
得分:0 
*应用到密码设置大小写数字和字母方案
*判断字符含字母数字
*程序设计:独叶为舟
*时间:201910
mm=allt(thisform.Text1.text)
if len(mm)<8
    messagebox("密码设置必须为8位以上数字及大小写字母组合!",0+48,"错误")
    return
else
    mm1=0
    mm2=0
    mm3=0
    mm4=0
    for i = 1 to len(mm)
        b=substr(mm,i,1)
        do case
            case isdigit(b)=.t.
                *?a+"的第"+ transform(i)+"位是数字"
            *Case Isalpha(b)=.T.
                *?a+"的第"+ Transform(i)+"位是字母"
                mm1=mm1+1
            case islower(b)=.t.
                *?a+"的第"+ transform(i)+"位是小写字母"
                mm2=mm2+1
            case isupper(b)=.t.
                *?a+"的第"+ transform(i)+"位是大写字母"
                mm3=mm3+1
            otherwise
                *?a+"的第"+ transform(i)+"位是数字字母外的字符"
                mm4=mm4+1
        endcase
    endfor
    do case
        case mm1<1
            messagebox("密码设置不规范:没有0-9数字!",0+48,"错误")
            return
        case mm2<1
            messagebox("密码设置不规范:没有a-z小写字母!",0+48,"错误")
            return
        case mm3<1
            messagebox("密码设置不规范:没有A-Z大写字母!",0+48,"错误")
            return
        case mm4>0
            messagebox("密码设置不规范:有其他非法字符!",0+48,"错误")
            return
        otherwise
            *return 1
    endcase
    *if mm1>=1 and mm2>=1 and mm3>=1 and mm4=0
    *messagebox("密码设置成功!",0+48,"成功")
    *else
    *messagebox("密码设置不规范!",0+48,"错误")
    *return 1
    *endif
endif
*判断字符结束

[此贴子已经被作者于2021-12-29 08:59编辑过]


【独叶为舟】工作室
2021-12-29 08:58
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10607
专家分:43182
注 册:2014-5-20
收藏
得分:3 
程序代码:
mm=allt(thisform.Text1.text)
if len(mm)<8
    messagebox("密码设置必须为8位以上数字及大小写字母组合!",0+48,"错误")
    RETURN .f.
ENDIF
nn = CHRTRAN(mm,"0123456789","")
IF nn==mm
    messagebox("密码设置不规范:没有0-9数字!",0+48,"错误")
    return .f.
ENDIF
mm = CHRTRAN(nn,"abcdefghijklmnopqrstuvwxyz","")
IF nn==mm
    messagebox("密码设置不规范:没有a-z小写字母!",0+48,"错误")
    RETURN .f.
ENDIF
nn = CHRTRAN(mm,"ABCDEFGHIJKLMNOPQRSTUVWXYZ","")
IF nn==mm
    messagebox("密码设置不规范:没有有A-Z大写字母!",0+48,"错误")
    RETURN .f.
ENDIF
IF !EMPTY(nn)
    messagebox("密码设置不规范:有其他非法字符!",0+48,"错误")
    return .f.
ENDIF
RETURN .t.
2021-12-29 18:51
schtg
Rank: 12Rank: 12Rank: 12
来 自:Usa
等 级:贵宾
威 望:67
帖 子:1710
专家分:3318
注 册:2012-2-29
收藏
得分:3 
学习啦,谢谢!
2021-12-30 06:11
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10607
专家分:43182
注 册:2014-5-20
收藏
得分:0 
以下是引用cssnet在2021-12-28 21:09:03的发言:



万一中文字符是Unicode LE、Unicode BE或UTF-8之类,ISLEADBYTE()一样死翘翘!

ISLEADBYTE()只取串第一个字节,也就是不考虑是什么“字”
ISLEADBYTE()对字符 0~~128和255 返回.F.,129~~254 返回.T.
2021-12-30 11:43
快速回复:有关字符判断代码
数据加载中...
 
   



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

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