实现代码如下:
import re
def sort_string(input_str):
# 将字符串按数字进行分割,并将数字和子字符串分别存储
tokens = re.findall(r'(\d+|\D+)', input_str)
nums = [int(t) if t.isdigit() else None for t in tokens]
strs = [t if not t.isdigit() else None for t in tokens]
# 将数字和子字符串组成字典,并按数字排序
items = sorted(zip(nums, strs))
sorted_strs = [x[1] for x in items if x[1] is not None]
# 将排序后的子字符串重新组合成一个字符串
return ''.join(sorted_strs)
# 示例
input_str = "abc1de3f2g5h4i"
sorted_str = sort_string(input_str)
print(sorted_str) # 输出 "abcdefghij5"