[已解决]格式化字符StringFormat右补位正则表达式
本帖最后由 jackass110 于 2010-7-16 11:54 编辑知道左补0的是StringFormat('%03s', $01)
现在需要右补0,如1返回100,22返回220
请教各位大大! StringFormat貌似没有向右补0的搞法 本帖最后由 水木子 于 2010-7-15 09:51 编辑
是这样吗?#include <String.au3>
_StringFormat('1')
_StringFormat('11')
_StringFormat('111')
_StringFormat('1111')
Func _StringFormat($sString)
MsgBox(0, '原字符串:' & $sString, '格式化结果:' & _StringReverse(StringFormat('%03s', _StringReverse($sString))))
EndFunc ;==>_StringFormat 是这样吗?
水木子 发表于 2010-7-15 09:48 http://www.autoitx.com/images/common/back.gif
呵呵,这个想法真是妙极了~~ 用正则比较麻烦,也弄个非正则的处理MsgBox(0, 0, StringAdd0Right(12345, 9))
MsgBox(0, 0, StringAdd0Right(12345, 4))
MsgBox(0, 0, StringAdd0Right(12345))
Func StringAdd0Right($d, $b = 3)
Local $len = StringLen($d)
If $len >= $b Then Return $d
Return $d & StringFormat('%0' & $b - $len & 's', 0)
EndFunc ;==>StringAdd0Right 回复 4# afan
嘿嘿!谢谢前辈加分,主要还是你在2楼的回复提醒了我。
MsgBox (0,"",_StringFormatRight (1,3))
MsgBox (0,"",_StringFormatRight (12,3))
MsgBox (0,"",_StringFormatRight (123,3))
MsgBox (0,"",_StringFormatRight (1234,5))
Func _StringFormatRight ($string,$len)
Return StringRegExpReplace (StringFormat('%-0'&$len&'s', $string)," ","0")
EndFunc
C.L 发表于 2010-7-15 12:20 http://www.autoitx.com/images/common/back.gif
这样一来貌似正则也不麻烦,呵呵~
%-0 后面的0可以不要,因为本来0遇到-就牺牲了,O(∩_∩)O~ 回复 8# afan
是的,那个0可以不要了,呵呵 A大麻烦请教一个问题,因为这问题可能对多数人来说很简单,所以不敢发求助贴,我搜了很久,试了很多次都没办法解决:
就是用正则,求字符串(字符串是从复合框中读出的)前三位字符中的数字,如:
1.2ABCD123,得12
12.aggfabdd,得12
133.2agdgage得133
我试过^\d+,在水木子的正则表达式测试工具中通过,但用如下语句无法完成。$1='1.2ABCD123'
$2=StringRegExp ($1,"^\d+",3);
MsgBox(16, "测试",$2)虽然用StringLen,StringIsDigit,StringMid配循环可以完成要求,但要10多行。我想请教用正则怎么解决,哎太菜了。 回复 10# ndyzx
我来试一下
$1='1.2ABCD123'
$2=StringRegExp ($1,"\b([\d.]){3,}(?=)",3);
MsgBox(16, "测试",$2)
回复 1# jackass110
local $str = 1
local $i = '000000000000000000000000000000000000000'
stringleft($str & $i, 4) 雷锋精神传天下!谢谢分享!
页:
[1]