无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站广告联系 微信:wuyouceo QQ:184822951
查看: 5101|回复: 18
打印 上一主题 下一主题

批处理系列7:计算字符串长度

[复制链接]
跳转到指定楼层
1#
发表于 2021-7-18 14:51:09 | 显示全部楼层 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 青青草 于 2021-7-18 15:03 编辑
  1. :Length
  2. setlocal enabledelayedexpansion
  3. set "$=!%1!#"
  4. set "len="&for %%a in (4096 2048 1024 256 128 64 32 16 8 4 2 1) do (if "!$:~%%a,1!" NEQ "" set/a len+=%%a&set "$=!$:~%%a!" &if "!$:~1!"=="" goto ok)
  5. set "s=!s!fedcba9876543210" &set/a "len+=0x!s:~16,1!"
  6. :ok
  7. endlocal&set/a "%2=%len%"&goto:eof
  8. pause
复制代码
调用
  1. call :Length %1 %2
  2. rem 第一个参数为字符串,第二个参数为字符串长度。
复制代码



2#
 楼主| 发表于 2021-7-18 21:40:13 | 显示全部楼层
dx163 发表于 2021-7-18 20:36
不会用也不会玩

多学习,慢慢就会了。
回复

使用道具 举报

3#
 楼主| 发表于 2021-7-19 10:21:51 | 显示全部楼层
回复

使用道具 举报

4#
 楼主| 发表于 2021-7-19 10:22:19 | 显示全部楼层
回复

使用道具 举报

5#
 楼主| 发表于 2021-7-19 11:04:12 | 显示全部楼层
回复

使用道具 举报

6#
 楼主| 发表于 2021-7-19 19:12:53 | 显示全部楼层
nttwqz 发表于 2021-7-19 15:46
不妨研究下汉字、标点、全角字符等长度为2才能和英文对齐的计算方法。

你的意思是?

点评

比如下面两行,按一般长度计算方法,长度均为6 你的意思是? abcde? 但是cmd的默认字体a无法对齐,即使第一列都是6。 你的意思是? a abcde? a 简言之,中文字符宽和英文字符宽不相同,安装相同的方法判断  详情 回复 发表于 2021-7-19 21:48
中文简体环境下的 cmd 把一个汉字 识别为一个字符,而实际上占用两个字符的显示位置。  详情 回复 发表于 2021-7-19 21:44
回复

使用道具 举报

7#
 楼主| 发表于 2021-7-20 18:12:45 | 显示全部楼层
nttwqz 发表于 2021-7-19 21:48
比如下面两行,按一般长度计算方法,长度均为6
你的意思是?
abcde?

中英文混编,批处理很难搞。
回复

使用道具 举报

8#
 楼主| 发表于 2021-7-25 10:55:10 | 显示全部楼层
回复

使用道具 举报

9#
 楼主| 发表于 2021-7-25 10:56:08 | 显示全部楼层
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2024-5-3 15:57

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表