字符串补足长度的函数?[已解决]
本帖最后由 cashiba 于 2017-3-18 09:32 编辑如下,有时需要将数字或字符串对齐数位,也就是在字符串前或后增加若干个某字符(比喻0或某符号)。
虽然能达到目的,但是总感觉有点不精炼,不地道
另外,consolewrite出来的也不整齐。
求修改....
#include <Date.au3>
#include <MsgBoxConstants.au3>
consolewrite(FillBit("现在时间是",18,"-",9) & _NowTime() & @CRLF)
consolewrite(FillBit("当前日期为",18,"-",9) & _NowDate() & @CRLF)
consolewrite(FillBit("今天的日期/时间",18,"-",9) & _Now() & @CRLF)
consolewrite(FillBit("今天的日期/时间",18,"-",9) & _Nowcalc() & @CRLF)
consolewrite(FillBit("今天的日期/时间",18,"-",9) & _NowCalcDate() & @CRLF)
Local $sNewDate = _DateAdd('d', 5, _NowCalcDate())
consolewrite(FillBit("今天 + 5 天",18,"-",9) & $sNewDate & @CRLF)
$sNewDate = _DateAdd('w', -2, _NowCalcDate())
consolewrite(FillBit("今天日期 - 2 星期",18,"-",9) & $sNewDate & @CRLF)
$sNewDate = _DateAdd('n', 15, _NowCalc())
consolewrite(FillBit("当前时间 + 15 分钟",18,"-",9) & $sNewDate & @CRLF)
$sNewDate = _DateAdd('s', 1087497645, "1970/01/01 00:00:00")
consolewrite(FillBit("+1087497645秒后日期",18,"-",9) & $sNewDate & @CRLF)
func FillBit($strr,$long,$sig,$site)
ConsoleWrite(@CRLF & @CRLF & StringLen($strr) & @CRLF);本行只是为看看字符串长度,可无情删除。
if StringLen($strr)>=$long or $strr="" then
return $strr
Exit
EndIf
if StringLen($strr)<$long Then
if $site="0" Then
for $i=1 to ($long-StringLen($strr))
$Strr= $sig & $Strr
Next
ElseIf $site="9" Then
for $i=1 to $long-(StringLen($strr))
$Strr= $Strr & $sig
Next
Else
$Strr= $Strr
EndIf
EndIf
return $strr
EndFunc感觉AU3的UDF库里应该有这类函数...
StringFormat好像可以做这个事情,但是,好复杂,看不懂。。。。怎么用?.... 不知有没看懂楼主要表达的意思:
个人认为在字符串长度相差不大的情况下直接 $str1 &@TAB & $str2
如果相差很大的话即使对齐了也看不习惯... 中文不好算长度,所以有时会比较蛋疼
#include <Date.au3>
consolewrite(StringFormat("%-14s%s\n",'现在时间是:', _NowTime()))
consolewrite(StringFormat("%-14s%s\n",'当前日期为:', _NowDate()))
consolewrite(StringFormat("%-12s%s\n",'今天的日期/时间:', _Now()))
consolewrite(StringFormat("%-12s%s\n",'今天的日期/时间:', _Nowcalc()))
consolewrite(StringFormat("%-12s%s\n",'今天的日期/时间:', _NowCalcDate()))
consolewrite(StringFormat("%-17s%s\n",'今天 + 5 天',_DateAdd('d', 5, _NowCalcDate())))
consolewrite(StringFormat("%-14s%s\n",'今天日期 - 2 星期',_DateAdd('w', -2, _NowCalcDate())))
consolewrite(StringFormat("%-14s%s\n",'当前时间 + 15 分钟',_DateAdd('n', 15, _NowCalc())))
consolewrite(StringFormat("%-16s%s\n",'+1087497645秒后日期',_DateAdd('s', 1087497645, "1970/01/01 00:00:00")))
ConsoleWrite(@CRLF)
consolewrite(StringFormat("%s%16s\n",'现在时间是:', _NowTime()))
consolewrite(StringFormat("%s%17s\n",'当前日期为:', _NowDate()))
consolewrite(StringFormat("%s%21s\n",'今天的日期/时间:', _Now()))
consolewrite(StringFormat("%s%22s\n",'今天的日期/时间:', _Nowcalc()))
consolewrite(StringFormat("%s%13s\n",'今天的日期/时间:', _NowCalcDate()))
consolewrite(StringFormat("%s%19s\n",'今天 + 5 天',_DateAdd('d', 5, _NowCalcDate())))
consolewrite(StringFormat("%s%13s\n",'今天日期 - 2 星期',_DateAdd('w', -2, _NowCalcDate())))
consolewrite(StringFormat("%s%21s\n",'当前时间 + 15 分钟',_DateAdd('n', 15, _NowCalc())))
consolewrite(StringFormat("%s%20s\n",'+1087497645秒后日期',_DateAdd('s', 1087497645, "1970/01/01 00:00:00")))
Huiseyu 发表于 2016-12-7 12:07 http://www.autoitx.com/images/common/back.gif
主要是补齐数位阿,比喻最简单的
1
2
...
11
12
...
111
222
.....
有时可能要变成
001
002
...
011
012
...
111
222
.....
这样子。就需要补齐数位
输出字符串或排版时能有这种要求.... 本帖最后由 cashiba 于 2016-12-7 21:01 编辑
中文不好算长度,所以有时会比较蛋疼
ceoguang 发表于 2016-12-7 13:13 http://www.autoitx.com/images/common/back.gif
感谢CEO超版....
不会用StringFormat函数...
StringFormat( "格式控制", 变量1[, ... 变量32])
"格式控制":
% [.precision] type
%[标志 ] [宽度] [.精度 ] 类型 )类似C语言的printf()和sprintf()函数 回复 5# cashiba
不会用,有个超级直观的方法,就是字符串截取
00000000000000000000001
在前面多加几个0,你保持成几位就截取成几位不就OK。
直观 傻瓜 简单 粗爆 回复cashiba
不会用,有个超级直观的方法,就是字符串截取
00000000000000000000001
在前 ...
绿色风 发表于 2016-12-10 21:37 http://www.autoitx.com/images/common/back.gif
现在想到的也就是缺位补0.....这个类似C语言的printf()和sprintf()函数不太好懂,估计懂了用起来也简单
http://pics.sc.chinaz.com/Files/pic/faces/4279/13.gif
页:
[1]