[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
  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. $arr = $s -split '\r?\n';
  18. $out = @();
  19. $str = '';
  20. switch -regex ($arr) {
  21.     '^---$' {
  22.         $out += $str;
  23.         $str = '';
  24.     }
  25.     default {
  26.         $str += $_ + "`r`n";
  27.     }
  28. }
  29. $out += $str;
  30. $out[0];
复制代码
1

评分人数

TOP

回复 3# 小白龙


    如果 Switch 语句晕,If 语句一样会晕
21~29行改成这样:
  1. $arr | %{
  2.     if( $_ -eq '---' ){
  3.         $out += $str;
  4.         $str = '';
  5.     }else{
  6.         $str += $_ + "`r`n";
  7.     }
  8. }
复制代码
遍历arr每一行,如果数组元素不等于三个横杠,字符串str叠加;等于三个横杠,字符串str存放到out,同时str设为空值。
就这么个简单的逻辑。

TOP

返回列表