[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

回复 12楼 的帖子

确实是很好的算法, 缺憾是当最大长度很大时, 也会需要很大的变量空间, len后面的标识符可用辅助代码生成无重复的序列

和 23 楼的想法一样, vva 变量是多余的, 我的改法更简明一些, 做个减法就行了
  1. @echo off&setlocal enabledelayedexpansion
  2. set aav=abcdefghijklmnopqrstuvwxyz不够的话文字也可以abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
  3. set 最大长度=80
  4. for /l %%a in (0,1,%最大长度%) do set /a len!aav:~%%a,1!=最大长度-%%a
  5. ::前面初始定义一次,后面可以任意使用,只要两个set 就可以取得字符串长度。
  6. ::但前提是,你要知道需计算的字符串中,最长字符串的长度。
  7. ::效率可想而知了!
  8. set str1=12345678
  9. set str2=abcdefghijklmn
  10. set var1=!str1!!aav!
  11. set var2=!str2!!aav!
  12. set/a var1=len!var1:~%最大长度%,1!,var2=len!var2:~%最大长度%,1!
  13. echo !str1! 长度为:!var1!
  14. echo !str2! 长度为:!var2!
  15. pause
复制代码

[ 本帖最后由 neorobin 于 2009-12-11 06:14 编辑 ]

TOP

返回列表