中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --
联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟
中国DOS联盟论坛
现在时间是 2026-08-09 21:48
47,811 主题排行 / 349,897 发帖 / 今日 2 篇 / 48,255 会员排行
DOS批处理 & 脚本技术(批处理室) » 出题:整理文本 (新手老鸟都来试试)
可打印版本  6,464 / 54
第1楼 26933062 发表于 2008-07-13 19:51
银牌会员 发帖 879 积分 2,268
出题:整理文本 (新手老鸟都来试试)
要求:把 a.txt 整理成按句号换行,
即:把没有句号的行和下行拼接,把有句号的行从句号处换行
注意:有可能连续几行都没有句号,也可能一行中有多个句号。
不用考虑特殊字符问题。
当然前提是不能把a.txt所有内容都拼接为一个变量。(因为变量的字符数是有限制的)
看谁的代码最简洁、高效、加分。。!

a.txt 内容如下:


要求输出如下格式:


总结一下:
答案众多,(2楼 14楼 17楼 19楼)
2楼采取逐字读取的办法,且可以处理大多数特殊字符,但效率太低。
14楼创建一个com文件、效率高的惊人。可惜我不懂、倒是长了见识。不过此题目的还是用纯p来解决。
17楼、19楼思路一样、代码略有不同,效率也不错、基本符合楼主要求。


[ Last edited by 26933062 on 2008-7-13 at 10:55 PM ]
第2楼 terse 发表于 2008-07-13 20:18
银牌会员 发帖 946 积分 2,404
逐字读取

不考虑特殊字符 也可以简化下


[ Last edited by terse on 2008-7-13 at 08:23 PM ]
第3楼 26933062 发表于 2008-07-13 20:21
银牌会员 发帖 879 积分 2,268
逐字读取不失为一个办法,但效率就大打折扣了。
加 5 分。
第4楼 terse 发表于 2008-07-13 20:29
银牌会员 发帖 946 积分 2,404
我想法把。换成echo. 可以吗
第5楼 slore 发表于 2008-07-13 20:37
铂金会员 发帖 2,478 积分 5,212
要是用vbs就easy了……bat字符处理就看大家啦
即是把原来一个一个执行的命令汇总起来,成批的执行,而程序文件可
以移植到其它电脑中运行,因此可以大大节省命令反复输
入的繁琐。



即是把原来一个一个执行的命令汇总起来,成批的执行,而程序文件可以移植到其它电脑中
运行,因此可以大大节省命令反复输入的繁琐。



这个的断句又是如何决定的呢?
第6楼 quya 发表于 2008-07-13 20:58
高级用户 发帖 172 积分 558 来自 江苏


可惜事与愿违, 最后的结果只有一行,高手帮我修改下。思路我认为是对的。
第7楼 HAT 发表于 2008-07-13 21:22
版主 发帖 5,017 积分 9,023
老土兄有没有研究过文本文件一行最多容纳多少个字符?超过这个极限,你的思路还正确吗?
第8楼 26933062 发表于 2008-07-13 21:44
银牌会员 发帖 879 积分 2,268
回 5 楼
即是把原来一个一个执行的命令汇总起来,成批的执行,而程序文件可以移植到其它电脑中运行,因此可以大大节省命令反复输入的繁琐。
这里中间没有句号,当然要算一句了。
第9楼 pusofalse 发表于 2008-07-13 21:52
银牌会员 发帖 646 积分 1,604
这样可以吗。。。
@echo off&setlocal enabledelayedexpansion
for /f "delims=" %%a in (a.txt) do set str=!str!%%a
set str=%str:。=。^&echo.^&echo.%
echo %str%
pause>nul


不好意思,忘记详细看题了。。。

[ Last edited by pusofalse on 2008-7-13 at 09:56 PM ]
第10楼 slore 发表于 2008-07-13 21:54
铂金会员 发帖 2,478 积分 5,212
那就是排版的问题?我就是不明白为什么在中字断开。。。


如果是vbs的话:replace "回车"为"空",replace "。"为 "。+回车"
第11楼 HAT 发表于 2008-07-13 21:54
版主 发帖 5,017 积分 9,023
to 9楼
楼主不允许这样做啊,呵呵。
第12楼 HAT 发表于 2008-07-13 21:55
版主 发帖 5,017 积分 9,023
Unix下这样写应该可以成功,但Windows下就是不行,思考中。。。
第13楼 26933062 发表于 2008-07-13 21:59
银牌会员 发帖 879 积分 2,268
Originally posted by slore at 2008-7-13 21:54:
那就是排版的问题?我就是不明白为什么在中字断开。。。


如果是vbs的话:replace "回车"为"空",replace "。"为 "。+回车"

并没有在“中”字断开,是论坛自动给它换行了。
所以我的样本中都是用空行代表换行的。这样说明白了么?
第14楼 qzwqzw 发表于 2008-07-13 22:01
银牌会员 发帖 636 积分 2,343
换个思路

第15楼 wxcute 发表于 2008-07-13 22:01
中级用户 发帖 211 积分 458
;回10楼
我觉得可能是记事本的BUG,有时用的好好的,关闭再打开时记事本就会出现中间断开的情况。
1 2 3 4  下一页
[ 联系联盟系统管理团队 - 中国DOS联盟 - 标准版 ]
Sponsored by ifanr Inc | © 2001–2023