找回密码
 加入
搜索
查看: 1505|回复: 3

[AU3基础] stringformat如何加空格两端对齐文本?[已解决]

[复制链接]
发表于 2018-4-30 19:46:06 | 显示全部楼层 |阅读模式
本帖最后由 cashiba 于 2018-4-30 22:20 编辑

Local $S1="无标题 - 新建记事本"
Local $S2="(未命名文档) * SciTE(ACN) [1 of 2]"
Local $S3="http://www.autoitscript.com/ - Windows Internet Explorer"
Local $S4="43951789.0000"

ConsoleWrite(StringFormat("[%-56s]",$S1) & @CRLF)
ConsoleWrite(StringFormat("[%-56s]",$S2) & @CRLF)
ConsoleWrite(StringFormat("[%-56s]",$S3) & @CRLF)
ConsoleWrite(StringFormat("[%-56s]",$S4) & @CRLF)

如上,4个字符串中最长的是$S3,为56个字符
其它3个字符与之左对齐,长度小于56的用空格补齐
以达到版面或打印时两端对齐的效果.
但是发现StringFormat对含有中文字符的字符串不好使....
如下:
[无标题 - 新建记事本                                             ]
[(未命名文档) * SciTE(ACN) [1 of 2]                           ]
[http://www.autoitscript.com/ - Windows Internet Explorer]
[43951789.0000                                           ]
[--------------------------------------------------------]

是不是对StringFormat的用法不对呢?
发表于 2018-4-30 21:22:20 | 显示全部楼层
个人理解是因为StringFormat统计字符数时一个汉字为一个字符,但汉字在显示时一个汉字占两个英文字符的宽带,就导致有汉字的句子输出后变长的情况,所以格式控制时的宽度应先减掉汉字数,如下:
Local $S1="无标题 - 新建记事本"
Local $S2="(未命名文档) * SciTE(ACN) [1 of 2]"
Local $S3="http://www.autoitscript.com/ - Windows Internet Explorer"
Local $S4="43951789.0000"

ConsoleWrite(StringFormat("[%-"&56-CHNnum($S1)&"s]",$S1) & @CRLF)
ConsoleWrite(StringFormat("[%-"&56-CHNnum($S2)&"s]",$S2) & @CRLF)
ConsoleWrite(StringFormat("[%-"&56-CHNnum($S3)&"s]",$S3) & @CRLF)
ConsoleWrite(StringFormat("[%-"&56-CHNnum($S4)&"s]",$S4) & @CRLF)
Func CHNnum($sData)
    $sCHN = StringRegExpReplace($sData, "[\x00-\xFF]", "")
    Return StringLen($sCHN)
EndFunc

评分

参与人数 1金钱 +25 收起 理由
cashiba + 25

查看全部评分

 楼主| 发表于 2018-4-30 22:18:57 | 显示全部楼层
个人理解是因为StringFormat统计字符数时一个汉字为一个字符,但汉字在显示时一个汉字占两个英文字符的宽带 ...
zldfsz 发表于 2018-4-30 21:22


原来如此....
感谢版主完美的解答!
发表于 2018-5-16 07:32:44 | 显示全部楼层
谢谢楼主提供
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-11-16 17:55 , Processed in 0.092907 second(s), 20 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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