批處理如何計算任意字符串的字符長度?

如題:比如 "ABCDEFGHIJ   AGFD  FAS  DFDS"  引號中包含字母和空格的一個字符串,如何編輯批處理計算出其長度?

方法一:

T.CMD 內容如下: 運行 T.CMD "ABC DEF GHI " 就可以得到引號中字符串的長度
-------------------------------------
@ECHO OFF
IF %1*==* GOTO :EOF
ECHO %1
SET ABC=%~1
SET /A N=0
:LOOP
SET ABC=%ABC:~0,-1%
SET /A N=%N%+1
IF "%ABC%" EQU "" GOTO END
GOTO LOOP
:END
ECHO %N%
PAUSE

方法二:

折半法(漸近法)

[code]@echo off&setlocal enabledelayedexpansion
set "str=afdjg do men contgfirfmck     song putint"
set /a max=8190,min=0
for /l %%a in (1,1,14) do (
     set /a "num=(max+min)/2"
     for /f "delims=" %%b in ("!num!") do if "!str:~%%b!" equ "" (set /a max=num) else set /a min=num
)
if "!str:~%num%!" neq "" set /a num+=1
echo 經計算字符串str共有%num%個字符
pause>nul[/code]
通過逐步縮小 判斷範圍。 好像中央2 購物街 節目的判斷商品價格的方法。呵呵。多次喊出價格,與真實價格比高低,確定真實價格所在的範圍。不斷喊價縮小範圍直到最終得到正確答案。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章