确实是很好的算法, 缺憾是当最大长度很大时, 也会需要很大的变量空间, len后面的标识符可用辅助代码生成无重复的序列
和 23 楼的想法一样, vva 变量是多余的, 我的改法更简明一些, 做个减法就行了- @echo off&setlocal enabledelayedexpansion
- set aav=abcdefghijklmnopqrstuvwxyz不够的话文字也可以abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
- set 最大长度=80
- for /l %%a in (0,1,%最大长度%) do set /a len!aav:~%%a,1!=最大长度-%%a
- ::前面初始定义一次,后面可以任意使用,只要两个set 就可以取得字符串长度。
- ::但前提是,你要知道需计算的字符串中,最长字符串的长度。
- ::效率可想而知了!
-
- set str1=12345678
- set str2=abcdefghijklmn
-
- set var1=!str1!!aav!
- set var2=!str2!!aav!
- set/a var1=len!var1:~%最大长度%,1!,var2=len!var2:~%最大长度%,1!
- echo !str1! 长度为:!var1!
- echo !str2! 长度为:!var2!
- pause
复制代码
[ 本帖最后由 neorobin 于 2009-12-11 06:14 编辑 ] |