找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 25858|回复: 2

[文本处理] [已经解决]批处理多列数据统计后的随机换位插入处理

[复制链接]
发表于 2014-10-24 02:21:02 | 显示全部楼层 |阅读模式
本帖最后由 w1983912 于 2014-10-24 20:16 编辑

txt文本内容如下  纯中文字母数字标点符号     分隔符为#顺序数字#        @@代表是空数据,先统计列有多少行,遇到不处理      

1#1#长沙#2#电器#3#张三#4#
2#1#株洲#2#数码#3#刘小军#4#
3#1#衡阳#2#生活#3#王刚#4#
4#1#岳阳#2#汽车#3#季磊#4#
5#1#邵阳#2#服装#3#雷红#4#
6#1#娄底#2#食品#3#范伟#4#
7#1#@@#2#玩具#3#高会#4#
8#1#@@#2#服务#3#冷航名#4#
9#1#@@#2#家具#3#@@#4#        
10#1#@@#2#电脑#3#@@#4#

暂时有 10条数据   有4列  请考虑  实际有很多列         #5#  #6# 。。。。。。 #50#
第一列不变  
第2列有6行   需要执行一次就随机一次 针对列而言     7-10行是不变的
第3列有10行  需要执行一次就随机一次 针对列而言
第4列有8行   需要执行一次就随机一次 针对列而言     9-10行是不变的


如执行一次就 得到新txt:

1#1#邵阳#2#服装#3#雷红#4#
2#1#衡阳#2#生活#3#范伟#4#
3#1#岳阳#2#数码#3#刘小军#4#
4#1#株洲#2#食品#3#冷航名#4#
5#1#娄底#2#电器#3#高会#4#
6#1#长沙#2#家具#3#王刚#4#
7#1#@@#2#服务#3#张三#4#
8#1#@@#2#电脑#3#季磊#4#
9#1#@@#2#汽车#3#@@#4#        
10#1#@@#2#玩具#3#@@#4#

第2 3 4列 同时随机在本列换  需要确定该列换多少行   空数据是不换的     数据行数不多 望高效代码

有劳大家费心帮忙 先谢谢了
发表于 2014-10-24 18:33:50 | 显示全部楼层
  1. @set @n=0;//&cscript -nologo -e:jscript "%~0"<a.txt>b.txt & pause & exit

  2. s = WScript.StdIn.ReadAll();
  3. a = [[], [], []];
  4. re = /#1#(.*)#2#(.*)#3#(.*)#4#/g;
  5. while ((b = re.exec(s)) != null) {
  6.         for (i=1; i<4; i++) {
  7.                 if (!/^@+$/.test(b[i])) a[i-1].push(b[i]);
  8.         }
  9. }

  10. for (i=1; i<4; i++) {
  11.         a[i-1].sort(function(){return Math.random()-0.5});
  12. }

  13. for (i=1; i<4; i++) {
  14.         j = -1;
  15.         re = new RegExp("(#" + i + "#)[^@]*?(#" + (i+1) + "#)", "g");
  16.         s = s.replace(re,
  17.                 function(s0, s1, s2) {
  18.                         j += 1;
  19.                         return s1 + a[i-1][j] + s2;
  20.                 }
  21.         )
  22. }
  23. WScript.Echo(s)
复制代码
 楼主| 发表于 2014-10-24 20:16:23 | 显示全部楼层
回复 2# apang

你好 ,感谢帮忙 ,谢谢,大好人
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-20 23:04 , Processed in 0.017248 second(s), 17 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表