中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 求助 findstr 或 sed 怎么判断变量是否为纯中文字
作者:
标题: 求助 findstr 或 sed 怎么判断变量是否为纯中文字 上一主题 | 下一主题
vkill
金牌会员





积分 4103
发帖 1744
注册 2006-1-20
来自 甘肃.临泽
状态 离线
『楼 主』:  求助 findstr 或 sed 怎么判断变量是否为纯中文字

set/p "var=" name=

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

[ Last edited by he200377 on 2006-11-2 at 07:42 AM ]

2006-11-2 07:41
查看资料  发送邮件  访问主页  发短消息 网志   编辑帖子  回复  引用回复
youxi01
高级用户




积分 846
发帖 247
注册 2006-10-27
来自 湖南==》广东
状态 离线
『第 2 楼』:  

看看我们版主的老帖子:
http://www.cn-dos.net/forum/view ... 8%E8%BE%BE%E5%BC%8F

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

@echo off
set/p var= name:
echo %var% |findstr "[0-9a-zA-Z]">nul && echo 含非中文!||echo 好的,输入正确!
pause>nul

2006-11-2 08:44
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
无奈何
荣誉版主





积分 1338
发帖 356
注册 2005-7-15
状态 离线
『第 3 楼』:  

sed 的没搞出来,来个 GREP 的吧,
echo %name%|grep -P "^[^\x00-\x80]+$" >nul&& ok!通过!
注意:这个表达式全角符号也会通过。



  ☆开始\运行 (WIN+R)☆
%ComSpec% /cset,=何奈无── 。何奈可无是原,事奈无做人奈无&for,/l,%i,in,(22,-1,0)do,@call,set/p= %,:~%i,1%<nul&ping/n 1 127.1>nul

2006-11-2 09:41
查看资料  发送邮件  发短消息 网志  OICQ (105400208)  编辑帖子  回复  引用回复
namejm
荣誉版主

batch fan


积分 5226
发帖 1737
注册 2006-3-10
来自 成都
状态 离线
『第 4 楼』:  

  在2F的基础上写个演示代码,在不考虑输入敏感字符的情况下,可以判断输入的是不是数字和字母的混合格式:
@echo off
set var=
set/p var= 请输入字符串:
echo %var% |findstr "^[0-9a-zA-Z]*$">nul && echo 该字符串是纯数字或纯字母或数字和字母的组合!||echo 该字符串含有数字和字母之外的字符
pause>nul




尺有所短,寸有所长,学好CMD没商量。
考虑问题复杂化,解决问题简洁化。
2006-11-2 09:46
查看资料  发短消息 网志   编辑帖子  回复  引用回复
amao
中级用户





积分 316
发帖 152
注册 2006-6-18
状态 离线
『第 5 楼』:  

在这里又学到了grep的一个例子

2006-11-2 12:42
查看资料  发短消息 网志   编辑帖子  回复  引用回复
9527
银牌会员

努力做坏人


积分 1185
发帖 438
注册 2006-8-28
来自 北京
状态 离线
『第 6 楼』:  

echo 我是谁|findstr "^[^a-zA-Z0-9;:|~`!@#%&{}_+-="',/\\\.\*\[\]\^\$\?]*$"



我今后在论坛的目标就是做个超级坏人!!!
2006-11-3 01:38
查看资料  发短消息 网志  OICQ (329429)  编辑帖子  回复  引用回复
vkill
金牌会员





积分 4103
发帖 1744
注册 2006-1-20
来自 甘肃.临泽
状态 离线
『第 7 楼』:  

findstr "^[0-9a-zA-Z] 我在想难道除了字母数字剩下的就是中文吗?

张,三 也算吗?

无奈何斑竹的还没有试,要求是春中文字 ,不包括& | % 等等

2006-11-3 07:17
查看资料  发送邮件  访问主页  发短消息 网志   编辑帖子  回复  引用回复
vkill
金牌会员





积分 4103
发帖 1744
注册 2006-1-20
来自 甘肃.临泽
状态 离线
『第 8 楼』:  



  Quote:
Originally posted by 无奈何 at 2006-11-2 09:41:
sed 的没搞出来,来个 GREP 的吧,
echo %name%|grep -P "^[^\x00-\x80]+$" >nul&& ok!通过!
注意:这个表达式全角符号也会通过。

今天再看看,ASII码值应运的真好~我linux的教材上看没有看到-P的参数,看要找点资料看看了

2006-11-4 07:26
查看资料  发送邮件  访问主页  发短消息 网志   编辑帖子  回复  引用回复
无奈何
荣誉版主





积分 1338
发帖 356
注册 2005-7-15
状态 离线
『第 9 楼』:  

grep 高版本好像是 2.5 以后加入的参数,-P 参数的作用是用 perl 样式的正则表达式匹配模式。



  ☆开始\运行 (WIN+R)☆
%ComSpec% /cset,=何奈无── 。何奈可无是原,事奈无做人奈无&for,/l,%i,in,(22,-1,0)do,@call,set/p= %,:~%i,1%<nul&ping/n 1 127.1>nul

2006-11-4 11:56
查看资料  发送邮件  发短消息 网志  OICQ (105400208)  编辑帖子  回复  引用回复
vkill
金牌会员





积分 4103
发帖 1744
注册 2006-1-20
来自 甘肃.临泽
状态 离线
『第 10 楼』:  

echo %name%|sed "s/[\x00-\x80]/,/" |findstr ",">nul ||echo ok

   此帖被 +2 点积分     点击查看详情   
评分人:【 redtek 分数: +2  时间:2006-11-9 02:49


2006-11-9 02:44
查看资料  发送邮件  访问主页  发短消息 网志   编辑帖子  回复  引用回复
3742668
荣誉版主





积分 2013
发帖 718
注册 2006-2-18
状态 离线
『第 11 楼』:  


@if %var% lss 吖 echo 不是汉字!
据说汉字区位码中一级字库是按拼音来排列的,没有时间测试,有朋友发现bug的吱一声。

2006-11-9 08:55
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: