更准确的说法,是对含有非数字的字符串中的,最右部分的数字进行加1操作。
本人在项目中实现的一个小功能,记录一下。
def incr14Str(string):
"""Increase one (+1) in the last number part of string."""
rt = re.search(r'(\d+)([^\d]*$)', string)
if rt:
pos_left = rt.span()[0]
num = int(rt.groups()[0])
numStr = ''
for i in range(len(rt.groups()[0])-len(str(num+1))):
numStr += '0'
else:
numStr += str(num+1)
return string[:pos_left] \
+ numStr[len(numStr)-len(rt.groups()[0]):] \
+ rt.groups()[1]
else:
raise ValueError('No suitable number segment found to +1.')
如果遇到***999***这样的情况,+1后会变成***000***,函数优先确保字符串的长度不变。
此函数已收录进我个人函数库项目common,项目有对应的单元测试代码。
-- EOF --