[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[问题求助] PowerShell不用split而使用开关switch法或正则法分割多行文本存到数组

下面的代码, 我是通过 -split 参数将多行字符分割后存到数组的,
  1. $s = @'
  2. Key 1
  3. -
  4. Hello 1
  5. World 1
  6. ---
  7. Key 2
  8. -
  9. Hello 2
  10. World 2
  11. ---
  12. Key 3
  13. -
  14. Hello 3
  15. World 3
  16. '@
  17. $a = $s -split '\r\n---\r\n'
  18. $a[0]
复制代码
能否通过下面代码中的开关法实现相同的效果?
代码需要改进一下, 现在只能获取两个---之间的字符串
我需要把---分割成的三个部分的文本存到数组, 就像上面代码执行后的效果一样
或者用正则也行
  1. $s = @'
  2. Key 1
  3. -
  4. Hello 1
  5. World 1
  6. ---
  7. Key 2
  8. -
  9. Hello 2
  10. World 2
  11. ---
  12. Key 3
  13. -
  14. Hello 3
  15. World 3
  16. '@ -split [Environment]::NewLine
  17. $between = $false
  18. $ss = Switch -regex ($s)
  19. {
  20. '---' {
  21. $between = !$between
  22. }
  23. Default {
  24. If ($between)
  25. {
  26. $_
  27. }
  28. }
  29. }
  30. $ss
复制代码

回复 2# WHY


  大佬 能把 switch 改成 if 语句吗? 对这个 switch 有点晕

TOP

回复 4# WHY


   多谢大佬, if 感觉要好理解

TOP

回复 6# terse


   感谢大佬, 正则改为下面也行, 最后那个应该是[`r`n]  还是[\r\n] ?

"([\S\s]+?)[\r\n]+---[\r\n]?"

TOP

返回列表