Board logo

标题: [文本处理] [已解决]如何判断输入字符的个数(长度)是否小于指定值? [打印本页]

作者: lovealei    时间: 2016-4-6 19:48     标题: [已解决]如何判断输入字符的个数(长度)是否小于指定值?

本帖最后由 pcl_test 于 2016-4-7 19:39 编辑

论坛,百度搜了下没有我要的,所以求助下大家

例如我下面的代码,要判断输入不能小于6位,如果小于6位则跳回来再输,如果大于等于6位则继续,同样也不能为空
  1. :inputid
  2. cls
  3. echo\
  4. echo\
  5. set card=
  6. set /p card=       请输入要合并的会员卡号后8位:
  7. if defined card (
  8.     goto ST2
  9. ) else (echo\ &echo      你的输入为空,请重新输入!&pause>nul&goto inputid)
复制代码

作者: /zhqsystem/zhq    时间: 2016-4-6 20:18

回复 1# lovealei
  1. @echo off&setlocal enabledelayedexpansion
  2. set "name=123456987654"
  3. set "name=%name: =%"
  4. for /l %%n in (0,1,8192)do (
  5. if not "!name:~%%n,1!"=="" set/a "n=1+%%n"
  6. )
  7. echo,%n%
  8. pause
复制代码

作者: pcl_test    时间: 2016-4-6 20:21

http://www.bathome.net/viewthread.php?tid=35020
作者: pcl_test    时间: 2016-4-6 20:30

  1. powershell -c "'1234567abc呵呵'.Length"
复制代码

作者: pcl_test    时间: 2016-4-6 20:40

  1. echo;1234567abc呵呵|gawk -F "" "{print NF}"
  2. echo;1234567abc呵呵|gawk "{print length($0)}"
复制代码

作者: pcl_test    时间: 2016-4-6 20:52

  1. set str=1234567abc呵呵
  2. mshta "javascript:new ActiveXObject('Scripting.Filesystemobject').GetStandardStream(1).Write('%str%'.length);close()"|more
复制代码

作者: WHY    时间: 2016-4-6 22:58

本帖最后由 WHY 于 2016-4-6 23:05 编辑
  1. set /p s=Input:
  2. if not "%s%" == "" if not "%s:~5%" == "" echo 不小于6个字符
复制代码

作者: lovealei    时间: 2016-4-7 16:04     标题: RE: 如何判断输入字符的个数(长度)是否小于指定值?

回复 1# lovealei


    版主,可能是浏览器问题主题分类出不来,我试了IE8,2345,QQ浏览器都不行,所以没有指定主题分类
作者: lovealei    时间: 2016-4-7 16:29

pcl_test 发表于 2016-4-6 20:30



    这个是批处理代码吗?怎么用呢
作者: lovealei    时间: 2016-4-7 16:29

WHY 发表于 2016-4-6 22:58



    试了下,只能判断输入为空,长度还是不行啊
作者: lovealei    时间: 2016-4-7 17:48

最后翻了下论坛还是解决了,多作了一个比较,效率不知道,代码贴出来
  1. :inputid
  2. cls
  3. echo\
  4. echo\
  5. set card=
  6. set /p card=       请输入要合并会员的6位身份证号码:
  7. if defined card (goto ST1) else (cls&echo\&echo\&echo       你的输入为空,按任意键重新输入!&pause>nul&goto inputid)
  8. :ST1
  9. call :strlen len
  10. if %len% NEQ 6 (cls&echo\&echo\&echo        请至少输入6位身份证号码!按任意键重新输入!&pause>nul&goto inputid) else goto ST2
  11. :strlen
  12. setlocal EnableDelayedExpansion&set n=0
  13. :strlen_loop
  14. if "!card:~%n%,1!" neq "" set /a n+=1&goto strlen_loop
  15. endlocal&set "%~1=%n%"&goto :eof
复制代码

作者: happy886rr    时间: 2016-4-7 18:04

本帖最后由 happy886rr 于 2016-4-7 18:06 编辑
  1. 欢迎来到ST2做客,正在开启人工智能...
  2. @echo off
  3. :INPUTID
  4. cls&echo;&echo;&set card=&set/p card=请输入要合并的会员卡号后8位:
  5. if defined card (if "%card:~5%"=="" (goto INPUTID)&goto ST2) else (set/p=你的输入为空,请重新输入&goto INPUTID)
  6. :ST2
  7. sort %0|more +7
  8. for /l %%i in (1 1 30) do (call,color %%time:~-1%%f&ping -n 2 127.1>nul)
复制代码
回复 11# lovealei
作者: lovealei    时间: 2016-4-11 10:31

回复  lovealei
happy886rr 发表于 2016-4-7 18:04



这个试了也行啊,




欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2