如何将Word中带缩进的标题转换为层级编号格式?
标题层级编号转换实现方法
以下是几种可靠的转换方案,适配任意深度的标题层级:
方案1:Python脚本(批量/深度适配首选)
通过代码动态识别层级并维护计数器,完全避免手动转换的遗漏问题。
def convert_to_numbered_titles(input_text): lines = input_text.strip().split('\n') counters = [] result = [] for line in lines: # 统计开头'-'数量确定层级 level = line.count('-', 0, line.find(' ')) # 调整计数器列表匹配当前层级 while len(counters) < level: counters.append(0) while len(counters) > level: counters.pop() # 更新当前层级计数 counters[-1] += 1 # 拼接编号与标题文本 number = '.'.join(map(str, counters)) title = line.strip().lstrip('-').strip() result.append(f"{number} {title}") return '\n'.join(result) # 替换为你的标题内容即可运行 input_content = """- title1 -- title1-1 -- title1-2 --- title1-2-1 --- title1-2-2 - title2 -- title2-1 -- title2-2 - title3 - title4""" print(convert_to_numbered_titles(input_content))
方案2:VS Code正则替换(快速手动处理)
适合少量内容的即时转换,按以下步骤操作:
- 粘贴标题文本到VS Code,按
Ctrl+H打开替换面板,勾选「正则表达式」 - 标记层级:
- 查找:
^(---*) (.*)$ - 替换:
$1|$2
- 查找:
- 从最深层级往浅处理:
- 处理3层标题:查找
^(--) (\d+\.\d+) \|(.*)$,替换为$1 $2.$COUNTER $3,重置计数器为1后点击「替换全部」 - 处理2层标题:查找
^(-) (\d+) \|(.*)$,替换为$1 $1.$COUNTER $3,重置计数器为1后替换全部 - 处理1层标题:查找
^(-) \|(.*)$,替换为$COUNTER $2,重置计数器为1后替换全部
- 处理3层标题:查找
- 清理残留符号:查找
^-+,替换为空
方案3:Excel辅助处理
- 将标题粘贴至Excel A列
- B列计算层级:
=LEN(LEFT(A1,FIND(" ",A1)-1)),下拉填充 - C列生成编号:
- C1输入
1 - C2输入公式:
=IF(B2=B1,C1+1,IF(B2>B1,C1&".1",LEFT(C1,FIND(".",C1)-1)+1)),下拉填充
- C1输入
- D列拼接结果:
=C1&" "&RIGHT(A1,LEN(A1)-FIND(" ",A1)),下拉填充即可
内容的提问来源于stack exchange,提问作者Jim
相关产品推荐
相关产品推荐

