中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --
联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟
中国DOS联盟论坛
现在时间是 2026-08-09 21:00
47,811 主题排行 / 349,897 发帖 / 今日 2 篇 / 48,255 会员排行
DOS批处理 & 脚本技术(批处理室) » [已解决]如何判断输入的是中文还是英文?
可打印版本  2,160 / 27
第16楼 tireless 发表于 2008-09-21 07:44
银牌会员 发帖 1,122 积分 2,025
Originally posted by HAT at 2008-9-20 05:30 AM:
那就用2楼的思路吧
第17楼 metoo 发表于 2008-09-21 08:13
初级用户 发帖 93 积分 195
归根结底就是findstr的正则太肉
第18楼 moniuming 发表于 2008-09-21 10:21
银牌会员 发帖 574 积分 1,335 来自 广西
再试试这个如何?
改一下,支持特殊字符:


[ Last edited by moniuming on 2008-9-21 at 10:27 AM ]
第19楼 tireless 发表于 2008-09-21 10:36
银牌会员 发帖 1,122 积分 2,025
Re 18 楼
计算不正确。

床前明月光,疑是地上霜。举头望明月,低头思故乡。 的计算结果是 240。正确的应该是 456。
第20楼 moniuming 发表于 2008-09-21 11:33
银牌会员 发帖 574 积分 1,335 来自 广西


[ Last edited by moniuming on 2008-9-21 at 11:41 AM ]
第21楼 HAT 发表于 2008-09-21 11:34
版主 发帖 5,017 积分 9,023
Re 16楼
15楼代码的运行结果:
C:\Test>test.bat
请输入:床前明月光,疑是地上霜。举头望明月,低头思故乡。
456

能把你的测试用例和测试结果贴出来看看吗?
第22楼 tireless 发表于 2008-09-21 11:44
银牌会员 发帖 1,122 积分 2,025
额,15 楼的代码有用。计算太慢了,昨晚我以为批处理没有反应,没等结果出来就关掉了...
第23楼 moniuming 发表于 2008-09-21 11:53
银牌会员 发帖 574 积分 1,335 来自 广西
经多次测试,20楼的通过各种测试,而且效率还可以,试试?

[ Last edited by moniuming on 2008-9-21 at 11:55 AM ]
第24楼 tireless 发表于 2008-09-21 21:29
银牌会员 发帖 1,122 积分 2,025
最后一次整合...

20 楼的代码完全不会出错。我想在原基础上再加上一些命令处理,可是我写的代码有点问题,所以再麻烦下各位,顺便整合在一起。

想在原基础上再进行这些处理:
1、还要显示输入的是什么
2、输入后,首先进行这些判断:
如果:
直接回车,则执行命令
输入的是 /h,则执行命令然后退出
输入的是 /s,则执行命令然后退出
输入的是 /r,则执行命令然后退出
再判断下面的:
是否以 /h 开头,如果是,则截取 /h 后面的字符,然后执行命令
是否以 /s 开头,如果是,则截取 /s 后面的字符,然后执行命令

以下是我修改后的代码:
: 原 20 楼的代码 : 我加上的

@echo off
setlocal enabledelayedexpansion
:bgn
del t_.txt 1>nul 2>nul
set "n="&set "count="
set /p str=请输入:

if not defined str goto 11
If %str%==/h 执行命令 & exit
If %str%==/s 执行命令 & exit
If %str%==/r 执行命令 & exit
if /i "%str:~,2%"=="/h" (
set str=%str:~2%
执行命令
goto settext
)
if /i "%str:~,2%"=="/s" (
set str=%str:~2%
执行命令
)
:settext
set Text=%str%

:agn
set st=!str:~,1!
>>t_.txt echo.!st!
if not "!str:~1!"=="" (set "str=!str:~1!"&goto :agn)
>>t_.txt echo god
for /f "delims=:" %%a in ('findstr /o .* t_.txt') do (
set /a "n+=1","m=n-1"
set "_!n!=%%a"
if !n! geq 2 (
call set /a "var=%%_!n!%%-%%_!m!%%"
if !var! equ 4 (set /a count+=19) else (set /a count+=10)
)
)
echo %count%
echo %text%
goto :bgn

:11
...


测试结果是,有空格就会出错。
(错误不出在别处,就在我添加的那段里运行中断了)

[ Last edited by tireless on 2008-9-21 at 01:53 AM ]
第25楼 zqz0012005 发表于 2008-09-21 22:07
中级用户 发帖 135 积分 297
If %str%==/h 执行命令 & exit
...
if /i "%str:~,2%"=="/h"

怎么后面知道加引号,前面为何不加
第26楼 tireless 发表于 2008-09-22 09:11
银牌会员 发帖 1,122 积分 2,025
怎么后面知道加引号,前面为何不加

加上引号后,输入空格没有问题了。却还有另外的问题:

请输入:(*^__^*) 嘻嘻……
此时不应有 嘻嘻……。

请输入:(**) 嘻嘻
此时不应有 嘻嘻。

请输入:O(∩_∩)O哈哈
此时不应有 O哈哈。

请输入:O(∩_∩)O
此时不应有 O。


是什么原因?

用以下代码做测试:



[ Last edited by tireless on 2008-9-21 at 02:52 PM ]
第27楼 moniuming 发表于 2008-09-22 11:45
银牌会员 发帖 574 积分 1,335 来自 广西
试试?



[ Last edited by moniuming on 2008-9-22 at 12:03 PM ]
第28楼 tireless 发表于 2008-09-22 12:18
银牌会员 发帖 1,122 积分 2,025
re 27 楼
没问题了。

谢谢大家耐心的帮助。
上一页  1 2
[ 联系联盟系统管理团队 - 中国DOS联盟 - 标准版 ]
Sponsored by ifanr Inc | © 2001–2023