中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --
联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟
中国DOS联盟论坛
现在时间是 2026-08-10 13:03
47,811 主题排行 / 349,897 发帖 / 今日 0 篇 / 48,255 会员排行
DOS批处理 & 脚本技术(批处理室) » 求助 findstr 或 sed 怎么判断变量是否为纯中文字
可打印版本  3,024 / 10
第1楼 vkill 发表于 2006-11-02 07:41
金牌会员 发帖 1,744 积分 4,103 来自 甘肃.临泽
求助 findstr 或 sed 怎么判断变量是否为纯中文字
set/p "var=" name=

我怎么判断%name%是否为纯中文字,例如"张三"可以,而"张3"等类似则不行

[ Last edited by he200377 on 2006-11-2 at 07:42 AM ]
第2楼 youxi01 发表于 2006-11-02 08:44
高级用户 发帖 247 积分 846 来自 湖南==》广东
看看我们版主的老帖子:
http://www.cn-dos.net/forum/viewthread.php?tid=22938&fpage=1&highlight=%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F

提一个简单的解决办法(过滤效果不敢恭维):

@echo off
set/p var= name:
echo %var% |findstr "">nul && echo 含非中文!||echo 好的,输入正确!
pause>nul
第3楼 无奈何 发表于 2006-11-02 09:41
荣誉版主 发帖 356 积分 1,338
sed 的没搞出来,来个 GREP 的吧,
echo %name%|grep -P "^[^\x00-\x80]+$" >nul&& ok!通过!
注意:这个表达式全角符号也会通过。
第4楼 namejm 发表于 2006-11-02 09:46
荣誉版主 发帖 1,737 积分 5,226 来自 成都
  在2F的基础上写个演示代码,在不考虑输入敏感字符的情况下,可以判断输入的是不是数字和字母的混合格式:
第5楼 amao 发表于 2006-11-02 12:42
中级用户 发帖 152 积分 316
在这里又学到了grep的一个例子
第6楼 9527 发表于 2006-11-03 01:38
银牌会员 发帖 438 积分 1,185 来自 北京
echo 我是谁|findstr "^[^a-zA-Z0-9;:|~`!@#%&{}_+-="',/\\\.\*\[\]\^\$\?]*$"
第7楼 vkill 发表于 2006-11-03 07:17
金牌会员 发帖 1,744 积分 4,103 来自 甘肃.临泽
findstr "^[0-9a-zA-Z] 我在想难道除了字母数字剩下的就是中文吗?

张,三 也算吗?

无奈何斑竹的还没有试,要求是春中文字 ,不包括& | % 等等
第8楼 vkill 发表于 2006-11-04 07:26
金牌会员 发帖 1,744 积分 4,103 来自 甘肃.临泽
Originally posted by 无奈何 at 2006-11-2 09:41:
sed 的没搞出来,来个 GREP 的吧,
echo %name%|grep -P "^+$" >nul&& ok!通过!
注意:这个表达式全角符号也会通过。

今天再看看,ASII码值应运的真好~我linux的教材上看没有看到-P的参数,看要找点资料看看了
第9楼 无奈何 发表于 2006-11-04 11:56
荣誉版主 发帖 356 积分 1,338
grep 高版本好像是 2.5 以后加入的参数,-P 参数的作用是用 perl 样式的正则表达式匹配模式。
第10楼 vkill 发表于 2006-11-09 02:44
金牌会员 发帖 1,744 积分 4,103 来自 甘肃.临泽
echo %name%|sed "s/[\x00-\x80]/,/" |findstr ",">nul ||echo ok
第11楼 3742668 发表于 2006-11-09 08:55
荣誉版主 发帖 718 积分 2,013

据说汉字区位码中一级字库是按拼音来排列的,没有时间测试,有朋友发现bug的吱一声。
[ 联系联盟系统管理团队 - 中国DOS联盟 - 标准版 ]
Sponsored by ifanr Inc | © 2001–2023