标题: [问题求助] powershell 截断行后倒序合并多行 [打印本页]
作者: 小白龙 时间: 2022-7-19 17:28 标题: powershell 截断行后倒序合并多行
$s变量包含多行字符串, 如果最后一行包含#号, 则截断为两行,
然后把所有行倒序合并, #号截断的右半部分,接到最后, 下面代码有详细注释,
刚学Powershell 没有思路, 求高人指点, 多谢!- $s= @'
- 我是首行
- 我是第二行
- 我是尾行 #中国 #美国
- '@
-
- #1.如果$s变量的尾行中包含#号,则从第一个#号处,截断为两行, 右半部分下面要用到
-
- #2.倒序合并$s变量的所有行,行与行之间有个空格! 注意: 上边#号截断的右半部分,要接到最后
- #结果应输出为:
- #我是尾行 我是第二行 我是首行 #中国 #美国
复制代码
作者: flashercs 时间: 2022-7-19 22:45
本帖最后由 flashercs 于 2022-7-19 23:03 编辑
- $arr = $s -split '\n'
- $x, $y = $arr[-1] -split '(?=#)', 2
- $arr = @(
- if ($null -ne $y) { $y }
- $arr | Select-Object -SkipLast 1
- $x
- )
- [array]::Reverse($arr)
- $arr -join ' '
复制代码
作者: 小白龙 时间: 2022-7-20 09:55
本帖最后由 小白龙 于 2022-7-20 09:56 编辑
回复 2# flashercs
多谢大侠, 我改了一下代码, 想请教一下,
红色字部分, 改成C#函数后, 截断后, 中国前的#会丢失
蓝色字部分, 这样反过来表达, 有不妥吗?
$s = @'
我是首行
我是第二行
我是尾行 #中国 #美国
'@
$arr = $s -split '\n'
#$x, $y = $arr[-1] -split '(?=#)', 2
$x, $y = ($arr[-1]).split('(?=#)', 2)
$arr = @(
if ($y -ne $null) { $y }
$arr | Select-Object -SkipLast 1
$x.trim()
)
[array]::Reverse($arr)
$arr -join ' '
作者: 小白龙 时间: 2022-7-20 10:09
下面的示例, 也没有保留分隔符 ,
另外, 有什么办法, 清理每段前后的空格吗? 下面例子, 截断后的第二三行前空格
$Record = 'Name : YY, Age:22, Details: "Hello, testing purpose"'
$Record.split(",", 3)
作者: flashercs 时间: 2022-7-20 14:25
-split 是powershell 操作符 默认是正则分割
.split是字符串分割
欢迎光临 批处理之家 (http://bathome.net./) |
Powered by Discuz! 7.2 |