我有以下Powershell变量
$var = "AB-0045"
我想将字符串中的数字增加为"0";AB-0046";。我可以做:
$newNumber = [int]$var.Substring($var.length -4,4) + 1
这将给我所需的数字46,但随后我必须将该46作为字符串附加到新字符串";AB-00";。有更好的方法吗?
既然有了整数,就必须转换回以您想要的方式格式化的字符串并进行连接。
我建议添加";AB-";而不是";AB-00";以防你的号码超过100。
要填充前导零,可以使用-f运算符。
例如"{0:d4}" -f 45
您仍然需要首先从原始字符串中获取整数(在本例中为45(。
我使用正则表达式类Replace()
方法和字符串类Split()
方法以及字符串格式化程序进行了测试。如果字符串的格式始终相同,则Split()
似乎会更快。Replace()
方法不关心最后4个数字之前发生的情况:
# Replace Method
[regex]::Replace($var,'d{4}$',{([int]$args[0].Value+1).ToString('0000')})
# Split method
$a,[int]$b = $var.split('-'); "{0}-{1:0000}" -f $a,++$b