标题: [问题求助] [已解决]powershell按层级和先后顺序修改每行前的序号 [打印本页]
作者: meixi 时间: 2022-12-16 15:04 标题: [已解决]powershell按层级和先后顺序修改每行前的序号
本帖最后由 meixi 于 2022-12-17 15:35 编辑
下面的图片, 左侧是要处理的源文本, 右侧框中是处理后的效果, 同种颜色表示它们在同一层级的意思
注意事项:
1.进入到下一层级的标记是: 该层级之前的行开头有个 ) 退出某一层级的标记是: 该层级之后的行开头有个 (
2.下一层级的起始序号是上一层最后面的序号其后加上1
3.每一层级的序号其先后顺序都修改为递加1
4.只改每一行前的序号, 序号前后的空格和文本都不要修改
5.示例文本中层级有三级, 实际情况可能会有N级
- $s= @'
- 1 中间
- 1 国家
- +
- 3 日
- +
- 9 韩
- 10 国
- -
- ) 13 中
- 41 日
- 48 美
- -
- 63 中
- ) 43 日
- 12 美
- 22 丽
- (
- 43 美
- (
- 6 日
- 9 中
- ) 13 好
- 43 日
- ) 43 子
- 02 大家
- 82 中
- (
- 43 华
- -
- 72 行人
- 63 列
- 14 必须
- (
- -
- 1 日
- 1 本
- +
- 1 美丽
- 1 国
- '@
-
- <# 处理后的效果:
- 1 中间
- 2 国家
- +
- 3 日
- +
- 4 韩
- 5 国
- -
- ) 6 中
- 61 日
- 62 美
- -
- 63 中
- ) 64 日
- 641 美
- 642 丽
- (
- 65 美
- (
- 7 日
- 8 中
- ) 9 好
- 91 日
- ) 92 子
- 921 大家
- 922 中
- (
- 93 华
- -
- 94 行人
- 95 列
- 96 必须
- (
- -
- 10 日
- 11 本
- +
- 12 美丽
- 13 国
- #>
复制代码
作者: idwma 时间: 2022-12-16 18:03
- $a=@(0)
- $s -split '\n'|%{
- if($_ -match '^\D*\d+'){
- $a[-1]+=1
- $_ -replace '(?<=^\D*)\d+',($a -join '')
- }else{$_}
- if($_ -match '^\s*\)'){$a+=0}
- if($_ -match '^\s*\('){$a=$a[0..($a.count-1-1)]}
- }
复制代码
作者: meixi 时间: 2022-12-17 15:35
回复 2# idwma
多谢!
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |