![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-09-14 13:08 |
共 47,812 主题排行 / 349,917 发帖 / 今日 0 篇 / 48,268 会员排行 |
| DOS批处理 & 脚本技术(批处理室) » 将文档内容,横列变为纵列 |
| 可打印版本 2,219 / 19 |
| 第1楼 26933062 | 发表于 2007-08-20 04:04 |
| 银牌会员 发帖 879 积分 2,268 | |
|
将文档内容,横列变为纵列 将文本纵向显示.
a.txt内容如下: a b c d e f h i j k l m n 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 a s d 11 12 13 14 15 要求输出结果如下 a h 1 6 a 11 b i 2 7 s 12 c j 3 8 d 13 d k 4 9 14 e l 5 10 15 f m 11 n 12 13 14 15 |
|
| 第2楼 slore | 发表于 2007-08-20 08:17 |
| 铂金会员 发帖 2,478 积分 5,212 | |
|
BAT我觉得不能实现,或者说很难实现。
脚本的话,定义个2维数组,然后转置输出即可。 |
|
| 第3楼 youxi01 | 发表于 2007-08-20 11:39 |
| 高级用户 发帖 247 积分 846 来自 湖南==》广东 | |
|
效率是比较低的了:
|
|
| 第4楼 slore | 发表于 2007-08-20 12:24 |
| 铂金会员 发帖 2,478 积分 5,212 | |
|
没想到P的代码也不是很复杂……我把VBS的也贴上吧
Const ForReading = 1 Const ForWriting = 2 Set objFSO = CreateObject("Scripting.FileSystemObject") Set objFile = objFSO.OpenTextFile("In.txt",ForReading) Dim InputStr,lineIndex,TempArr,OutArr(100,100) Do Until objFile.AtEndOfStream InputStr = objFile.ReadLine TempArr = Split(InputStr," ") If UBound(TempArr) > MaxY Then MaxY = UBound(TempArr) For i = 0 To UBound(TempArr) OutArr(lineIndex,i) = TempArr(i) Next lineIndex = lineIndex + 1 Loop objFile.Close Set objFile = objFSO.OpenTextFile("Out.txt",ForWriting,True) For i = 0 To MaxY For j = 0 To lineIndex - 1 If OutArr(j,i) = "" Then OutArr(j,i) = " " OutStr = OutStr & OutArr(j,i) & " " Next objFile.WriteLine OutStr OutStr = "" Next objFile.Close Set objFile = Nothing Set objFSO = Nothing |
|
| 第5楼 namejm | 发表于 2007-08-20 12:56 |
| 荣誉版主 发帖 1,737 积分 5,226 来自 成都 | |
|
来段效率高点的代码,通过构造数组来实现,没有考虑特殊情况:
[ Last edited by namejm on 2007-8-20 at 06:06 PM ] |
|
| 第6楼 HAT | 发表于 2007-08-20 13:47 |
| 版主 发帖 5,017 积分 9,023 | |
|
数组用的妙
学习 |
|
| 第7楼 youxi01 | 发表于 2007-08-20 13:48 |
| 高级用户 发帖 247 积分 846 来自 湖南==》广东 | |
|
楼上的不错,不过还有点点问题,我乱想的,提出来而已,错了别见怪啊
如果行数超过了10行的时候,怎么办? 根据你的思路:str111它要如何去识别? 当%%i取1 %%j取11的时候可以为str111 当%%i取11 %%j取1的时候,还是str111,这样是不是有点矛盾拉? 将str111这样的表达形式改为str1101的形式可以好点吧?! |
|
| 第8楼 namejm | 发表于 2007-08-20 13:57 |
| 荣誉版主 发帖 1,737 积分 5,226 来自 成都 | |
|
本来行和列之间是有下划线连接的,发出来的时候,嫌_!_num!的格式不好看,没考虑太多,就临时去掉了,还是补回去吧。
|
|
| 第9楼 slore | 发表于 2007-08-20 14:10 |
| 铂金会员 发帖 2,478 积分 5,212 | |
|
还是脚本里数组好用嗬
|
|
| 第10楼 26933062 | 发表于 2007-08-20 14:43 |
| 银牌会员 发帖 879 积分 2,268 | |
|
namejm 版主
你的下划线还是没显示出来啊 输出格式还是很不整齐,这也正是我昨晚卡壳的地方. 我的思路是,在设变量前,先判断该变量有几个字符,来决定该在前面加几个空格. 其实应该不难,但怎么就是搞不对. |
|
| 第11楼 HAT | 发表于 2007-08-20 14:56 |
| 版主 发帖 5,017 积分 9,023 | |
|
//我的思路是,在设变量前,先判断该变量有几个字符,来决定该在前面加几个空格.
那岂不是要再加for循环 时间复杂度要变成O(n的3次方)啦 |
|
| 第12楼 youxi01 | 发表于 2007-08-20 15:35 |
| 高级用户 发帖 247 积分 846 来自 湖南==》广东 | |
|
对齐不是难点,用空格补齐就行了
|
|
| 第13楼 26933062 | 发表于 2007-08-20 15:54 |
| 银牌会员 发帖 879 积分 2,268 | |
|
问题是如何加?
我想了很久都没加上去 |
|
| 第14楼 slore | 发表于 2007-08-20 15:56 |
| 铂金会员 发帖 2,478 积分 5,212 | |
|
你每个 单位字的长度没有什么限制……
如果: 1 128312718478 2 sd gadf adfdfsf 23 dfsdfsdfsd 0 12 12 44 5 2 35 12312 1 2423 45345 32323 1 2 3 4 5 6 7 8 9 10 长的和短的差很多,还是不好排版的(即便用TAB字符也一样不好对齐)。 |
|
| 第15楼 26933062 | 发表于 2007-08-20 16:07 |
| 银牌会员 发帖 879 积分 2,268 | |
Originally posted by slore at 2007-8-20 15:56: 我现在的a.txt内容全是单个字符,且全用空格分开的. |
|
| 1 2 下一页 |
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |