![]() |
中国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: 并没有在“中”字断开,是论坛自动给它换行了。 所以我的样本中都是用空行代表换行的。这样说明白了么? |
|
| 第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 |